To borrow the phrase I just heard recently which came from nitsuj17
ROM is the Car, Kernel is the Engine, and Theme is the paint job.
essentially Android OS is like a car manufacturer, and they have x cars available. The Fascinate, the Driod X etc
Well you see that Car Manufacturer and you really like that fascinate car, but it has more stuff than you want, and doesnt have some stuff that you do want. So you get a different model of that same car (ROM). You now pick your engine, super powered, economy, fast, etc (Kernel), then you decide how you want it to look when your in it (Theme) so you pick the paint job.
As far as the best to use. Its up to the individual. You will just have to try them out until u find one you like.