Normal programmers do have a say. They can vote with their feet and walk away, which is exactly what has happened. That's a power that shouldn't be underestimated - it's the same power that forced Microsoft to re-examine what they did with Vista, for example.
Regarding platforms, this is a very muddied issue.
First of all, we can discount mobile platforms. They don't use OpenGL - they use GL ES, so unless you restrict yourself to a common subset of both, you're not going to hit those (even if you do, you'll get more pain and suffering from trying to get the performance up and from networking/sound/input/windowing system APIs than from developing for 2 graphics APIs anyway).
We can discount consoles. Even those which have GL available, it's GL ES too, and anyway the preferred approach is to use the console's native API instead.
I am including OpenGL ES, while not strictly traditional OpenGL, it is close-enough to where a renderer can target both (granted, with some glossing, wrapping, and ifdef's in a few areas).
That leaves 3 - Windows, Mac and Linux. Now things get even muddier.
The thing is, there are actually two types of "platform" at work here - software platforms (already mentioned) and hardware platforms (NV, AMD and Intel). Plus they don't have equal market shares. So it's actually incredibly misleading to talk in any way about number of platforms; instead you need to talk about the percentage of your potential target market that you're going to hit.
Here's the bit where things turn upside-down.
In the general case for gaming PCs we're talking something like 95% Windows, 4% Mac and 1% Linux. So even if you restrict yourself to something that's Windows-only, you're still potentially going to hit 95% of your target market.
Now let's go cross-platform on the software side, and look at those hardware platforms I mentioned. By being cross-platform in software you're hitting 100% of your target market, but - and it's a big but - OpenGL only runs reliably on one hardware platform on Windows, and that's NV. Best case (according to the latest Steam hardware survey) is that's 52%.
So, by being Windows-only you hit 95% of your target market but it performs reliably on 100% of those machines.
By being cross-platform you hit 100% of your target market but it performs reliably on only 52% of those machines.
That sucks, doesn't it?
I have generally had good enough success with OpenGL on ATI cards, so no huge issue here (previously, I was doing a lot of development using an ATI card, but currently I am using an NV card).
the big suck usually comes up with Intel chipsets, but they don't really work well in general IME.
Now, maybe you're developing for a very specialized community where the figures are skewed. If so then you know your audience and you go for it. Even gaming PCs (which I based my figures on) could be considered a specialized audience, but in the completely general case the figures look even worse. There's an awful lot of "home entertainment", "multimedia" or business-class PCs out there with Intel graphics, there's an awful lot of laptops, there's an awful lot of switchable-graphics monstrosities, there's an awful lot of users with OEM drivers, there's an awful lot of users who never upgrade their drivers.
And that's the final reality - it's not number of platforms that matters; that doesn't matter at all. It's percentage of target markets, and outside of specialized communities being cross-platform will get you a significantly lower percentage than being Windows-only.
doesn't do much for those of us who *do* use Linux sometimes though.
it also ignores, however, the possibility that the Windows branch of a 3D engine can also use D3D, if needed, while keeping an OpenGL backend around for portability.
but, OpenGL makes a good baseline, if a person doesn't want to be locked to a single target.
or, they can use OpenGL-ES, if targeting the cell-phone or browser-games market.
it is like, most of the world still uses 32-bit x86 for apps, but writing code that only works on 32-bit x86 still isn't a good idea.
"what if we need to build for 64-bits? or on a target running ARM?", "who ever heard of such a thing!".
doesn't mean a person can't have target-specific code (such as for performance or similar), but it shouldn't really be mandatory for basic operation either.