The key things about ROMS are how they can be customized (especially with android) to your hearts content. Let me explain;
A stock ROM is the rom you get from the manufacturer/network. Say you buy a phone, you turn it on, the interface you look at, the settings you change, EVERYTHING is the rom, and seeing as you havent changed it, it's the 'stock' ROM, it's the one made by the manufacturer.
But with a custom rom, you can take a phone you buy from outside and remove any limitations imposed by the manufacturer/network you got the phone from by installing a custom rom someone else made. It can have any number of changes from the stock rom, from just looking a bit different and being a bit smoother to completely overhauling your phone and making it feel like a brand new machine.
To install a custom rom requires a few things, read around more and when you've found one you want for your phone look for the specific instructions for that rom but it usually boils down to
-root your phone (actually you only usually end up having to do this the first time, if you flash a rom which has root, which most do. Read on, i explain what that means)
There may be extra steps involved but they just expand on that
if you root, it's is essentially a process to gain complete control over your phone, even to the most basic 'root' level) your phone and install a custom ROM, you have FAR more control over your phone, which is fair, it's YOUR phone.
Say you got a HTC phone because you liked the specifications, but didn't like the interface you get with a HTC phone (called Sense UI on a htc btw) and you like the look of basic android instead, install a custom rom which is based on plain android.
(using a launcher can change the interface and you needn't be rooted and have a custom rom installed to install a launcher from the market) (a launcher is something that completely changes the homescreen interface for you, and there a TON out there, that's a whole other topic i wont go into, but google it and search xda for more info. Infact there's a list on xda of nearly ALL homescreen launchers)
Say you wanted better battery life, a faster phone, or countless other tweaks applied to your phone to improve it; a custom rom is specifically designed for improving the phone compared to the stock ROM.
Individual tweaks can also improve your phone experience, but they are applied on top of your current rom (any they must be compatible with your device and then the rom your running, but when you read around you'll understand whether something is compatible)
Hope that helped, lemme know if it didn't
Have fun, and read around... always the best way to get more knowledge
back in the day devices had ROM and RAM (random access memory)
The ROM was where the OS lived, if you hard reset or took the battery out it would always revert to the state in the ROM. In the old days any customisation was kept in RAM, this was not persistent and would mean you could lose everything if you pulled the battery out and didn't have it saved to an SD card, you could divide up the RAM in to storage and program memory, some devices had two batteries, one external the other internal which whilst not powerful enough to run the phone it did give it enough power to keep the memory active and thus stop you losing your data!
So anyhow, at this point in time around WM-2002 HTC had pumped out several devices, the mobile carrier O2 had them rebranded and sold as XDAs (that's partly where XDA-dev comes from) and came to the attention us, and XDA-developers was born!
So development began (consolidated)and because you were developing the OS to be flashed to the ROM, they become known as ROMs
even to this day its fairly accurate, the only difference is that from WM5 it was compulsory to have persistent storage, which is where NAND came in to the picture.
So there you have it, ROM RAM and NAND (Storage) all under one Roof!
Yes im sure that was riveting but its history and its always good to learn that there was life before iphones and Android