Thanks Stuart, if you could send me the links that would be great, will take a look through.
Here you go Michael, these links run in the order of ROOTING-CUSTOM ROM-KERNALS
CF ROOT
The link below explains how CF root works and how to apply it to your phone. For the Galaxy S2 it is all based around basebands (this will become apparent if you read the thread in the link).
CF root works with ODIN to flash the phone. Assuming you can guarantee no interruption when the phone is connected to the PC by USB then this method is virtually fool proof (its the way I did my phone)
http://forum.xda-developers.com/showthread.php?t=1103399
LIST OF CUSTOM ROM's
This link is pretty self explanatory in that it lists all the custom ROM's you can use on your phone.
They range from ICS to JB in AOSP (Android Open Source Project), AOKP (Android Open Kang Project) or original Samsung flavours. The type you choose is up to you and how much you want i the way of simplicity or feature packs.
At present I am running the AOKP Vanilla Rootbox V4 (based on JB 4.2.2)
http://forum.xda-developers.com/showthread.php?t=1531244
LIST OF KERNALS
This is where it can get a we bit trickier if your not sure. Changing the kernal after you have done a custom ROM install can assist with many things from improving battery performance, changing WIFI functionality to allowing you to overclock/underclock your phone.
It can take a few attempts to find a kernal that works perfectly although in all honesty the developer usually declares which is stable and useable.
My current kernal is Dorimanx v9.21, this allows me to overclock to 1.6Ghz and underclock down to 100Mhz (the benefit here is I can set my phone up to idle at 200Mhz when the screen is off or the phone is inactive (a good way of saving battery)
If your not entirely sure though you can just avoid kernals altogether.
http://forum.xda-developers.com/showthread.php?t=1702166
Hopefully this helps, if you want more info/help just drop me a PM or ask in this thread.