Would you rather implement POSIX over Win32 or Win32 over POSIX?
Countrary to Windows. You wouldn't believe the enormous amounts of stuff that Windows has, and apps rely on almost everything they can rely on. COM is huge. DCOM is huge. DirectX is huge. The list goes on and on.
Really, that's my answer. Win32 is Raymond Chen Land, Fear and Loathing With Backwards Compatibility. SimCity relied on internal details of how the kernel managed memory such that it reused memory it had already freed and they kept it working. MSFT modified the Windows kernel to avoid breaking it.
Torvalds is Chen-like in his adamance that the kernel can't break userspace, but Torvalds never had to deal with Windows 95 and the strange MS-DOS-derived world it inhabited. Linux never had to deal with 16-bit x86 code, so it was always able to keep its internals private, limiting the random stuff user programs could end up relying on. Win32 offers no such consolations.
I'd implement POSIX on top of Win32 any day to avoid the alternative, with the caveat that some things are flatly impossible and some things are possible but will never be efficient.
Used to. Subsystem for UNIX Applications is now deprecated.
Cygwin runs on top of Win32, and its library functions call into Win32. Thus, it is strictly a compatibility layer.
Whereas SUA runs alongside Win32 and does not depend on Win32 APIs. Thus, it is theoretically a replacement for Win32, for people who wanted to run a UNIX environment on top of the NT kernel. Practically, however, it was used primarily for application porting.