What's the difference between 16 bit and 32 bit memory addressing?
Whole books can be written on topics like this. Basically, what Windows 2000 does is implement a complete virtual machine (VM) in NTVDM.EXE (NTVDM == NT Virtual DOS Machine). That provides the loader and executer for the 16-bit programs. Unlike cross machine VMs, NTVDM is a little simpler in that it does not have to provide the execution engine because it can just pass the instructions right on to the CPU to execute. From what I gather in talks with people on the Windows team at Microsoft, NTVDM is essentially a complete copy of Windows 3.1.