I know that the first Microsoft OS to support multiple processors officially was NT but I've never figured out how that worked and how it was able to scale up when you had more physical processors. NT 4 for example supports multiple processors but at that time I don't believe any third party software was available yet to support it unless you wrote it yourself. Was NT able to load-distribute single-thread processes between cores as it detected them so no one core would remain idling?
Also when did Microsoft ship multiprocessing support for their commercial products like Microsoft Office and Visual Studio? Was it a later patch-in to enable multiprocessing/coding?
I can't speak to specifics, but there's really not that much magic in supporting multi-processors. There's lot of room for improvement, to be sure, especially with code specifically designed to work on mulitple cores. But running multiple processes on multiple processors is not a great leap, even within the kernel.
The secret is locking. Early OSes on multi-processor systems just locked everything that may touch shared state, via a single, shared Giant Lock, and then let it run. This Giant Lock restricted access to shared state across all of the CPUs.
Applications like Office or Visual Studio at the time probably weren't overly affected. The only space for real concern is the shared memory model and how that's manifest for things like threads (which are shared sub processes within an overarching process) vs the high level processes, which share "nothing". Threads on MP systems can get in to trouble with shared state being accessed across CPUs. If there was a lot of threading on those early systems, they could have certainly run in to trouble on an MP system. However, the NT kernel may well have simply scheduled the threads on to the same processor as the primary process -- which eliminates most of those problems.
Once those things are done, then the system isn't that much different. You have an MP system, it's just less efficient than it could be. MP systems were certainly not new when NT came around, but the ramifications of running on such systems for application programmers weren't as widespread.
But, consider, Linux got rid of its Giant Lock in 2011, FreeBSD in 2019, OpenBSD and NetBSD still have the Giant Lock.
So, its important, but not necessarily that important.