Although there are many different wireless cards made by many different vendors available for purchase today, there are only a small number of companies that make wireless chipsets. For example almost all 802.11b cards in existence today have either an Intersil Prism or Agere Hermes chipset in them. Chipsets are important because usually wireless drivers work with Chipsets rather than individual cards. Finding out whether your chipset is supported in Linux is the first step in getting your wireless card working.
You may be able to find out what chipset your card contains by looking at one of the following lists.
Please fill in here
There are a number of cards which are not supported directly. The most notable of these was the Broadcom chip series but this is now improving. These however can, in many cases, be supported by using Windows drivers with a project called NdisWrapper.
An excellent question, it depends on what you want to do.
The best cards for general 802.11b use are the Proxim Gold cards which contain a HermesWirelessChipset, these are well supported by Linux via a number of drivers. They will work in both AdHoc and Managed modes but they cannot do HostAP.
As well as the module for your chipset, make sure that your kernel has support for loading wireless modules. The default kernel of any recent distro will almost certainly already have this, but if you compile your own kernel, make sure you have the following support. This from LinuxKernel 2.6.9, but should be similar for similarly-versioned kernels.
Some drivers also require additional support for some of the crypto algorithms. You probably want at least CONFIG_CRYPTO_AES and CONFIG_CRYPTO_MICHAEL_MIC if you intend to use WPA encryption, although some drivers implement this themselves.