VBA is the only way to go for GB, GBC, and GBA games. It's solid, stable, fast, and has a lot of settings. NEVER use anything else other than VBA, I would say.
DeSMuME is the only emulator to use for NDS games and probably 3DS in the future. They came out with an experimental version that uses a JIT compiler, making it SANIC FAST. It has a lot of options, plenty of improvements on the regular NDS, has a reasonably-small amount of bugs, and is very versitile.
If your computer is made of wood and is from 2002 or some shit like that, NO$GBA is an acceptable alternative to DeSMuME. It's much faster, but performs significantly less spectacularly, and has a lot less options. Only use it if even the DeSMuME with the JIT compiler wasn't fast enough for you.