In operating systems, the kernel is the OS core. The thing that manages the entire system. With no kernel, your system sits around and stares blankly in to space, metaphorically drooling on itself. If you use windows, your kernel is a file called C:\windows\ntkrnl.dll, and chances are you've never looked at or touched this file directly. Still, without it, there would be trouble.
On Linux, the kernel includes device drivers, sometimes built into the kernel itself, sometimes in attachable "modules" that can be loaded and unloaded as need be. The modules are an advantage because if you're not using that driver, you can temporarily unload it to save memory. The main kernel must remain in memory at all times, and the most recent ones are often 900k or more. Certain drivers must be built in, like the disk driver. (Otherwise it'll never find the disk module to load it!)
So with Linux, every time one upgrades the kernel, one has to rebuild it, and before one can build it, one must configure it for what drivers one wishes to support, and which drivers one wishes to ignore. For drivers that are supported, one must decide whether to build it into the kernel, or to have a module to be loaded in later. One can use the previous configuration as a baseline, which is helpful on old installations, but configuring for a brand new installation is often a frustrating process.
Thankfully, there are tools to help you, like 'lspci' that tells you what devices you have (which does suggest what drivers you need to support, naturally), /proc/cpuinfo tells you about the CPU, and so on, but ultimately, the correct interpretation is up to you.
What if there was a utility, that could read all this kind of information, and automatically configure the kernel for you. You could double-check its work before compiling, but I predict that quickly such a system could allow for automatically compiling the best possible kernel for any given computer.
This would bring it up to the ease of use of windows, which uses a plug and play system to figure out the right drivers, installs them, and does so without any intervention on the user's part.