Custom ROMS are customized/unofficially supported versions of the Android OS built by independent ROM developers. Most are very safe, fun and enjoying to use. Most popular are Cyanogen Mod & AOKP (Android Open Kang Project) but there are dozens more of smaller independent ROMs out there. Kernels is the main link between your device and the OS. Custom kernels when installed can improve battery life, allow you to adjust the speed of the processor (under clocking, under volting, overclocking) along with various other tweaks.
Me personally, I'm a huge fan of AOKP for the wide selection of user selectable features to tweak your device. Everything from battery meter to moving and removing your clock in the status bar to changing colors of these things and much much more...