Windows does a good job of abstracting the hardware away and preventing the OEMs from tweaking the APIs so this isn't an issue in most cases. The major exception is for the large game developers who have to buy tons of various configurations of GPUs and motherboards in order to test various configurations. Basic hardware accelerated graphics works well across platforms but AAA games use complex shaders and heavy optimizations which are based on the incomplete and broken implementations of GPU vendors.
> The major exception is for the large game developers who have to buy tons of various configurations of GPUs
The same is also true for Android. Most (all?) of the valid complaint about how hard it is to target different Android devices comes from game developers struggling to get which version of OpenGL to use, which OpenGL API calls are bugged on which devices, how to circumvent low level GPU limitations on this or that device, etc. And afaik, those are usually based on incomplete and broken implementations by GPU vendors as well. Same as with windows.
Most of the regular utility app, which use normal Android layout and API instead of OpenGL, are doing fine just testing their app in different AVDs (instances of the emulator) just to make sure they're compatible with different devices.
(then of course, there's a few newbies who didn't spend 10 minutes reading the guide for running on different devices on d.android.com, then whine their app's font looks different on a friend's phone. But I'm counting those out)