Basically, it's what you build in. You can build a module into the kernel but that's usually 'compiled in'
Static & dynamic refer to the way you compile. Every box has basic routines (write on screen, read usb, etc). With static all that code is included for every program that needs it so they are huge. many copies of the same code cen be there, hogging ram.
Dynamic relies on the presence of libraries, and the library is only loaded once no matter how many programs use it. I the libs go missing, your program barfs.