The fundamental difference is the compiler used, and the size of an int - 32bits vs 64bits
64bit operating systems (win7, xp64) need 64bit drivers to access devices, similarly a 32bit OS needs 32bit drivers - they generally operate in kernel space, which is why they need to be native to the chip architecture
In the past, anyone could write a driver and bolt it into your system; drivers, though not hard to write, have very low-level access to the OS and hardware, and a poorly written one could cause chaos - so there are now a couple of safeguards
Code Signing - it's more difficult to install a driver that hasn't been digitally signed
Kernel Mode Signing - you
must have a kernel mode driver signed by microsoft, after passing compliance
details here
http://msdn.microsoft.com/en-us/windows/hardware/gg487317[
^]