Hi, sorry about the delay in replying - busy weekend getting backups done and Mountain Lion installed and ready for a demo.
Kernel extensions are add-on pieces of software which live in the /System/Library/Extensions folder. As implied by the name, they run as part of the OS X kernel, which is the lowest level of the operating system. The kernel is the only part of the operating system which is able to access the physical hardware of the computer. A normal application can only access hardware indirectly, by asking the kernel (or one of the kernel extensions) to do the access on its behalf.
Kernel extensions include drivers for many of the hardware components in the Mac, and for a basic level of communication with several types of external peripherals. For example, they include drivers for the graphics controller, hard drive or solid state drive, iSight camera, Bluetooth, Ethernet, Wi-Fi, Firewire, Thunderbolt, USB and many USB, Bluetooth, Firewire and Thunderbolt peripheral types.
Most of the kernel extensions are supplied by Apple, but some third party software also installs kernel extensions. One example on my computer is the EyeTV television receiver, which needs a kernel extension to support communiation over USB with the receiver hardware.
Because the kernel has direct access to the hardware, it can access the entire computer and everything in memory, with no restrictions. This means that if there is a bug which causes software running in the kernel to crash, it typically results in the entire operating system crashing. This is known as a "kernel panic", and requires a restart to recover.
To reduce the likelihood of kernel panics, and to provide as high a degree of protection as possible, OS X is designed to run as much code as possible outside of the kernel, so that if there is a bug, the chances are that it will only affect one application rather than the entire OS. This also helps to enforce the protection mechanisms on OS X: a bug in one application or non-kernel code it uses typically cannot access memory used by other applications, or violate file access privileges. A bug in the kernel could allow any data on the computer to be accessed by malicious software.
Printer drivers are not kernel extensions. They operate at the same level as application code, so a bug in a printer driver might affect one application but won't cause the entire OS to crash and shouldn't result in privilege violations.
In the case of communication with a printer which is connected via USB, the printer driver is responsible for converting the content of the printed document into the right format for the particular printer. The data is then sent to the printer via a standard kernel extension which is responsible for communicating with printers via USB. A bug in that kernel extension could still cause the OS to crash, but this is less likely because it is a standard and relatively simple piece of code, whereas the printer driver (not running as a kernel extension) is much more complicated and therefore more likely to have bugs.
Getting back to the original question: the kernel always runs in a particular mode - either 32-bit or 64-bit, depending on the version of OS X and the particular Mac model. Leopard (10.5) and earlier only have a 32-bit kernel. Snow Leopard (10.6) and Lion (10.7) have both 32-bit and 64-bit kernels, and pick which one to use at startup depending on the Mac model, special key sequences, and parameters stored in non-volatile memory. Mountain Lion (10.8) only has a 64-bit kernel.
All kernel extensions must run in the same mode as the kernel. Older kernel extensions were originally written to run in 32-bit mode (matching the kernel used in Leopard and earlier). More recent kernel extensions contain both 32-bit and 64-bit code, and the appropriate code is used according to the kernel's mode. (The kernel extensions supplied by Apple with Mountain Lion are 64-bit only, because they will only ever be used on a 64-bit kernel.) If you try to use a 32-bit-only kernel extension on a 64-bit kernel (or vice versa), the kernel extension cannot be loaded. This will prevent access to whichever hardware component is supported by that kernel extension.
Applications and associated support files (such as printer drivers) can run in either 32-bit or 64-bit mode, and this is independent of the mode in which the kernel is running. If the kernel and applications are running in different modes, a mode switch occurs whenever the application does something which involves the kernel. There is a small speed penalty for this, so if the application is frequently invoking the kernel it is a good idea to have the application mode matching the kernel mode for best possible performance.
The processor type determines whether it is possible to run 64-bit code at all. Early Intel Macs used "Core Solo" or "Core Duo" processors, which are 32-bit and cannot run any 64-bit code. All later Macs have a "Xeon", "Core 2 Duo", "Core i3", "Core i5" or "Core i7" processor, all of which are 64-bit and are able to run both 32-bit and 64-bit code.
Lion (10.7) requires a 64-bit processor, because even though its kernel can operate in 32-bit mode on a 64-bit processor, some of the application-level code supplied with Lion is 64-bit only.
Mountain Lion (10.8) goes further by requiring the kernel to also run in 64-bit mode, therefore all kernel extensions must have 64-bit code (if they also have 32-bit code, it is ignored).
Applications can still run in either 32-bit or 64-bit mode on both Lion and Mountain Lion.