Backwards compatibility was the one thing Windows got right. It was the only real reason to use it.
But backwards compatibility isn't actually that hard if you're not horrendously mismanaged to begin with. You have some ancient miserable APIs from the 1990s that you still have to support, fine, but that's not actually that bad. Old APIs tend to be small because computers were small that far back, you write a compatibility layer and can keep using it. By definition the old stuff never changes so you only have to do it once.
The actual problem is that Microsoft is full of little fiefdoms. Because what they should do, after becoming a huge behemoth with the resources to do it (which has been the case for more than two decades), is to design a set of good, modern APIs, also only once. Something that you're happy to support forever because you took the time to get it right. Then you only have to support that and the little compatibility layer for truly ancient software.
Instead, they have an army of middle managers who are practically at war with each other to show that they can introduce some kind of novel "improvement", the vast majority of which quickly fall out of favor but then have to be supported indefinitely if you don't want to break backwards compatibility. And that makes backwards compatibility a huge ordeal because every year there is more poorly-engineered rubbish you have to support forever.