I guess the simplest way to look at it is like this, the ROM is a complete OS, of which a kernel is a part.
When you flash a kernel, you are overwriting the one that comes with the ROM, and replacing it with your own (in most cases, so that you can overclock the device).
As for which ROM to...