So much of the incompatibility we see is simply caused by developers not following the rules when writing the applications.
Microsoft provide information on the methods for interfacing with the operating systems and where the OS expects certain files to be stored.
Certain developers ignore this and write things their own way - it works with the OS so no problem.
Until the next OS
When Microsoft develops a new Operating System and needs, for technical reasons, to change these entry points or locations, It includes code to handle the older locations. Of course the badly written software assumes everything is where it used to be and promptly crashes
A similar situation exists with the need for programs to run as admin - it is easier to write a program assuming that it will have access to everything. On XP, where most uses were admin and security wast basically not used on files and folders, this worked.
When vista arrived you end up with the need to run a something like a desktop publisher as admin - causing the UAC prompt to trigger. This was of course "all Microsoft and Vista's fault".
Unfortunately we also have some developers who treat a change of operating system as a chance to make money by choosing to not supply updates for their products but new chargeable products. This applies to both software and hardware (which explains a lot of driver problems
)