Kernel Modules are pieces of code that can be loaded directly into the Kernel at runtime to extend functionality. The Kernel itself can usually determine what modules it may need to properly run, but they can also be manually added, or removed by the user themselves.
Typically, The Linux Kernel ships with every modules built in by default, but this may vary depending on your Distribution, as such, there are some distributions that only provide modules your system needs rather than shipping ALL modules by default, This may help with performance on some systems (Typically older ones benefit the most) at the cost of new devices potentially not working when added. It is also possible to compile a Linux kernel on a pre-existing system to only use needed Kernel modules.