Kernel modules are linux kernel parts that you can optionally use. You can add them or remove them from the kernel at run time.
Hardware drivers are kernel modules that get inserted into the kernel when they are needed.
PAM stands for Pluggable Authentication Modules. It is a set of ways to authenticate users. It has nothing to do with kernel modules. They can work on BSD and Solaris too.