You aren't alone with your concerns and I've had to return cards and swap them with other models in the past just to get things right. I believe the drivers for some cards are not as well written as they were in the past, possibly in the maufacturers rush to try and become the first out with a new feature or standard and also to try and reduce cost as much as possible to try and dominate the market.
My guess is that Linux suffers less from this as most drivers are open source meaning anyone in the community finding faults is able to fix them, instead of relying on a single profit-hungry manufacturer with proprietry code (and I'm not just pointing the finger at Microsoft).

I also use reference drivers where possible as some second-tier brands modify drivers to introduce their own features and in the process more bugs come with it.
I have also heard of known compatibility problems between some cards and chipsets, especially Atheros cards and VIA chipsets. Personally I don't buy or supply computers with anything other than Intel chipsets maily because I have found they seem to be the most stable with a wide variety of peripherals. Mind you it doesn't mean I don't always come accross such machines in the field so occasionally it can be purely trial and error.
It's also worth trying to use cards that feature chipsets by the same manufacturer as the access point they connect to; many manufacturers slightly different features and implimentations (especially with so-called 'turbo' modes).
I realise this probably isn't particularly helpful but it basically summarises some points I have found in the past. Sadly there often seems to be no pattern to some events.
My 5c (long live the 5c!)