It's worth noting that Windows wasn't an operating system until Windows 95 was released. Before that, it was simply a graphical shell.
And even after that, it was a rather horrendous operating system, until Win2K and subsequent versions incorporated the OS/2 kernel. Windows flourished over its competitors for one reason only: Gates lavished love and attention on the software development community, who turned out software for Windows in droves.
Actually Windows 3.1 was very much a OS. It takes over most of the system from DOS, overwriting and reconfiguring memory in RAM away from how DOS configured it. While Windows 3.1 did have some DOS running in the background but File Management, some drivers, and APIs are all windows. Exiting Windows actually does a quick relaunch of DOS allowing it to put its files back into the memory locations in RAM it would normally sit. It really was a full 16bit OS that was actually pretty stable.
Windows 95/98 would have been pretty stable without all the legacy 16bit stuff they tossed in to keep compatibility up. But still just like MAC OS up till OS9 there is not much in way of Memory Protection like the hardware abstraction layer. But the Lack of these options allowed both systems to use little amount of RAM to run.
The biggest reason why Windows NT took forever to become mainstream is Memory Requirements. NT easily required a System to have 4x or more memory than the win 9x version.
I grew up with Both DOS/Win 3.1 and Apple. With a 486 as the family computer until it was replaced by the first gen iMAC and later a windows 98 Pentium machine my dad picked up second hand for MS Office. I still have a love for the old 486 and the great games, I still get my kicks playing Doom and Duke Nukem.
To this day I'm still windows on the desktop, Mac for Mobile, and Linux/unix on the server.