To elaborate slightly ...
When a "stock" kernel is booting, first it "sort of comes halfway-up," far enough to unpack the contents of the "initial ram-disk," mount it under a minimal contrived shell, and let it run a bunch of hardware-discovery scripts provided by the distro vendor. These scripts select which loadable kernel modules to load, to support whatever hardware it detects. The loaded
kernel, therefore, is not really so "bloated," but you still wind up having a bunch of kernel modules lying around. (Hey, if your computer happens to have a DECSystem token-ring card installed, your kernel is ready to use it! "On sale today!"
You can, if you choose,
determine what that set of modules turned out to be, and compile them into a customized kernel. You can also query the actual characteristics of your CPU, motherboard devices, and so on, and compile the kernel with options that are specific to that. Having done this, you can actually eliminate entirely the "halfway house."
The question is ... do you want
to bother? Sure, it can be fun to have a system that boots in eleven seconds flat ... as mine (Gentoo) in fact do. But, most of my Linux systems remain booted for literally months at a time. The time it takes to reboot, therefore, is inconsequential to me. (Unless, of course, I can manage to get it down to ten seconds ... hmmm ... hackahackahackahack ... )