A ROM is a full copy of the system software (including all the apps installed by default).
There are "custom" ROMs and "stock" ROMs.
Stock ROMs are the official ROMs released by the manufacturer (sometimes in conjunction with carrier). Typically stock ROMs have some manufacturer added customizations (e.g. HTC has Sense, Samsung has TouchWiz etc.)
Custom ROMs are unofficial ROMs made by hackers/developers and released for free online. These ROMs can add features, remove crapware preinstalled in stock ROMs, fix security bugs, bring new versions of Android to phones earlier than they are officially ported, offer performance boosts, theme the interface etc. Some popular custom ROMs include CyanogenMod and MIUI (MIUI has an iPhone-esque look and feel to it).
Custom ROMs will have all official features of any given version of Android, plus some extra features and goodies. They may not have all the features of a stock ROM though, if the manufacturer added stuff. (Usually if a feature of a stock ROM is perceived as "good", it'll make it into most custom ROMs for that device).