We don't have to typedef it, not normally. Generally windows headers (e.g. #include <windows.h> ) will define it for you.
Generally, the reason for typedef is to separate it conceptually from something else. However, in this case I think its more so for the typedefs of PUINT or the like, which windows defines.
In short, yes you can use unsigned int, and the compiler won't care. However, if you do lots of programming for Windows, often you'll use their typedefs to fit in with the overall API.