Hi all! First of all I want to apologize in advance for being a noob

There's so much information both here and on XDA that I'm completely lost. So I decided I'll just post my questions here.
@Blue1k, thank you for the great tutorial. I followed it step by step, flashed a new kernel and my SGS2 was rooted. I then flashed it with VillainROM 3.0, but it looks like my rooted kernel was gone. The CWR and Superuser apps were not there anymore. I then flashed stock everything back and rooted it again. I wasn't too happy with Villain anyways.
So here's what I still don't understand. These are probably basic questions for many, by anyways:
1. To root my SGS2 the kernel had to be KG2. Does it only matter the first time, or does it mean that everything (kernels, ROMs) always have to match this? If I want to flash a custom ROM now when my phone is rooted, do I have to pay attention to this as well?
2. Do custom ROMs include rooted kernels that overwrite the one you have?
3. Can I theoretically flash my Bell SGS2 with official ICS that is currently rolling out in Europe, even if it doesn't match KG2? Will it be rooted or will I have to flash it with rooted kernel? Will the kernel have to be KG2 or will it need to match whatever kernel ICS comes with?
4. What is the difference between Odin and non-Odin ROMs? In most tutorials that I read about flashing custom non-official ROMS people use Odin. Or am I missing something?
Appreciate your help.