ROM is Read Only Memory, but the Android world has always used that term incorrectly to refer to the file that contains the Android software. They really mean Read Only Memory Image. These files are loaded into what is (again incorrectly) called read only memory, which is where the phone stores its operating system. This memory area can't be modified (written to) by the user when the phone is used in normal mode.
Flashing is custom ROM, means loading (writing) the a customized version of the Android Operating System into read-only memory.
Most of this terminology comes from the hacker community who have no prior operating system experience, hence the misuse of terminology and concepts.
You probably should avoid doing any of this till you are very VERY familiar with the concept and the consequences. Bear in mind that 80% of these custom roms have things that are totally works in progress, with a lot of broken stuff which means you phone may not have any camera, or sound or something on any given version.
Others are based on the original software releases only slightly hacked and these tend to work fine. The trick of course is finding the good ones from the bad ones. Lots of careful reading on more technically oriented sites than this one is advised.
Don't do any of this with your daily driver phone, don't do this with any phone you can't afford to be without, and kiss your warranty goodby.