There was absolutely zero practice in my operating systems course at the university, but a very, very thorough discussion about synchronization primitives.

I think Windows doesn't provide the 8- and 16-bit atomics because some platforms that MS has targeted in the past, targets now, or possibly wants to target in the future don't support sub-word reading. Windows NT for the Alpha, for example. The Alpha cannot read or write less than a machine word - 64 bits - so a simple update of a 32-bit memory value cannot be a single atomic instruction.
There's also simply no point in doing atomics on values smaller than 32 bits. Alignment requirements, cache coherency requirements - sub-32 accesses will very rarely safe space, and can easily hurt performance.