When you compile your own kernel, you can include only the stuff that you want/use/need and leave the rest out making for a leaner kernel. You can also apply patches from various sources which could address very specific issues you may have.
The kernel is the core part of the operating system which communicates between the hardware and software. It provides for a very low level interface from system software to the hardware. The system software would provide another interface to the userspace software.
After seeing your other post, if you are using a RedHat kernel, it usually has everything compiled as modules which do not get loaded unless needed. If you do not yet know what you are doing, use the stock kernel a while longer until you become more familiar with *nix systems.