I know this isn't what you want to hear but as mentioned above, the best ROM is totally opinionated. Which one suits your needs/wants the best. Some folks like CM9, some like AOKP, some like Sourcery, some like Gummy, some like Liquid, some like Steel Droid, some like SlimICS, some like Kangorade, some like ParanoidAndroid (tablet/phone hybrid), some like MIUI, some like stock or as close to stock as possible (like something like Rascream)....etc (no offense to the many I left out). This is the beauty of Android, choices. As long as you have the time, flash as many as you are interested in and figure out which ones suit your needs the best. If you aren't thrilled with the one you flashed, or find it lacking something you want that another may have....switch it up. When I had more free time, I was flashing a new ROM every couple days, I am down to one every week or sometimes longer.
About kernels, this is a little less opinionated. First some kernels don't work as well as others on certain devices. Meaning my phone may absolutely love one kernel and not so much another, while you may have the opposite luck. Second some ROMs don't play as nice with certain kernels for various reasons. This usually isn't a problem, but there have been some ROMs where features are gimped in the kernel or the ROM due to the kernel and ROM not playing nice. Faux, Fraco, Glados, Trinity, Lean Kernel, and PBJ are probably the most popular kernels out there. Some have features others may lack, so pay attention to that if you want something special. But generally, it is an experimentation game to see which ones work the best for you. Each kernel dev is quite active in making updates and responding to questions/concerns about said kernel. Speaking of kernel updates, sometimes an old version of a kernel may not work well for you, but a newer version may work wonderfully for you. So it is a constant cycle of experimentation on the kernel end.