It's not perfect by any means, and "compatibility" checks often never will be, but I think it does a good enough job to prevent breaking a working system that isn't ready for the upgrade yet.
Which would be nice, if it worked 100%. But it doesn't, so that's a problem for non-technical users. In fact, the Win10 upgrade on my Win 8.1 laptop "helpfully" rolled-back the touchpad driver from the latest driver designed for Win 8.1 -- which works fine with Win 10 -- to the original Win 8 driver, which doesn't function at all under Win 10. Now, I'm not non-technical user, and it was straightforward for me to hunt down the installed version of the touchpad driver, realize the problem, go to the manufacturer's website and download the latest Win 8.1 version, install it, and go on with life. And I had an external BT mouse which didn't have a driver problem to use while I was doing that, and enough proficiency that I could have probably done what I needed to do with the keyboard anyway. But, had I been a nontechnical user...
On the former, even rolling back to Windows 7 turned bad, as all tasks (created by Microsoft, not by me) became somehow invalid.
I think release-day Windows 7, 8, 8.1, and 10 all broke wifi connectivity for a large swath of users. At least one Windows 7 patch bricked a large number of Asus motherboards, and the Windows 10 upgrade did the same to a smaller number of Asus machines.
The usual story is that rapid adoption of Windows upgrades is basically volunteering your machine as a guinea pig, to the point that a lot of people won't adopt a new version until after Service Pack 1. Compatibility checks don't really stand in the way of pushing broken upgrades on people who can't fix them...
It fails. My father was forced to buy a new scanner (Canon I believe, one with an inlay for scanning photo-negatives) and a new soundcard (Xonar DX) because of lack of support. The soundcard itself still worked though, but none of the supporting tools (equalizer, multichannel processor, softvol control).
That driver acts as a network protocol that you attach to a particular network adapter, so when I upgraded, the adapter showed up as having no protocols. Totally Roland’s fault, waiting until the final release of Windows 10 before even starting to work on upgrading their drivers, but Microsoft also gets some blame for thinking that only Microsoft network protocols matter.
The rollback worked, so no lasting harm that I’ve noticed, yet.
Similar. I KNOW that my wifi adapter's driver is not compatible with Windows 10. So were I to upgrade, I'd have no Wifi until I buy a new adapter, which I don't want to do for that machine. So the constant harassment to upgrade is frustrating.
After W10 started, it did tell me what it had done. I was able to just reinstall the exact same client it removed and it works fine.
Honestly, that is a lot of the problems with the Windows 10 upgrade experience, poor UX (something which Microsoft has rarely been known for during install/upgrade time). I have never seen a machine just randomly upgrade itself to Windows 10, but the way Microsoft presents the damned pop up has a big blue "Yes, please!" button that most people are just going to click to make it go away - then come back shocked that their system "upgraded itself". It's entirely anecdotal, but there is 6 computers I manage for myself and my family, out of the 4 that don't live in my house (some random Dell AIO, a Lenovo Yoga, Lenovo IdeaPad S405, Dell XPS tower) between the time I last worked on them and the next they had been upgraded to Windows 10 without any issue and without any complaint. To be fair, they were all running Windows 8.1 already, so there wasn't a bunch of shocking UX changes outside of Cortana.
All of these systems were owned illiterate users, my grandmother, mother and aunt. To be fair, there wasn't any odd hardware configurations, but nonetheless I was shocked that these systems were upgraded without me even getting asked in "why does this look different" questions.