For example, 入学金 is correct; we can't use 入学費・代・料; that's not 日本語.
But all of them mean costs for something. Could someone please explain this?
The top few pages of Google search result already contain lots of fruitful answers, only if you can read them:
The following is basically a summary of them in English, plus what little I know.
A general term for money in specific situations, not necessarily in exchange for something, might even not cost. It's a fallback option when none of the rest could apply.
保証金, 入学金, お祝い金, 所持金, 補助金, 契約金, 敷金, 賠償金
Charge or fee for activities done, typically charged by organizations with a predetermined amount of money.
授業料, 手数料, 送料, 使用料, サービス料, 通行料, キャンセル料
Price or charge in exchange for concrete (doesn't mean tangible) items. Most widely used.
食事代, 飲み代, タバコ代, バス代, バイト代, 電気代, 地代, 修理代
Overall expenses for specific activities, not used for detailed items.
医療費, 交通費, 学費, 生活費, 食費, 参加費
Fare or transportation fees, otherwise limited to a small number of idiomatic expressions.
運賃, 電車賃, 家賃, 工賃, 手間賃
料, just preferred in charges for constant everyday services.
通話料金, 電気料金, 高速料金, 基本料金
入学金 is a good example of unspecified expenditure. Not only you in Japan wonder why and for what they have to pay it.