First off - check vendor recommendations. Some vendors are more scrupulous than others, but they'll generally have a list of 'known compatible' cards.
If you lack this information - as you seem to - I would start with buying Emulex or QLogic HBAs, and avoid anything else unless you have a specific entry in an interoperability matrix.
You will probably need to look as array specific card settings though - whilst they generally work by default, there's a noticeable performance advantage to getting settings/firmware/drivers aligned. (And note - some vendors have specific firmware/drivers that they recommend/support. That's not to say others won't work just fine, but these ones will be the ones they've tested specifically).
- always dual path your fiber channel. Ideally with two separate physical cards, going across two completely separate sets of switches.
- keep the cards identical. Firmware, drivers etc.
(You can mismatch if you're connecting to different storage infrastructure if you must)