When I had to work under Windows I maintained >200 cygwin packages. Only about 10% needed trivial fixes for linux'isms or BSD'isms.
fork has its own implementation, cygwin is entirely unrelated to WSL (as before the Interix subsystem). It's extremely slow though. WSL or mingw are much faster. But mingw is a pain.
Maybe that newer MinGW-W64 project or whatever it is called.
The original MinGW that just links programs to the system library called MSVCRT.DLL.
It provides POSIX porting only the extent of the meagre support for a few POSIX functions in MSVCRT.DLL. That has things like open, read and dup2, and a half-baked stat and such.
fork has its own implementation, cygwin is entirely unrelated to WSL (as before the Interix subsystem). It's extremely slow though. WSL or mingw are much faster. But mingw is a pain.