PC wise there are three main emulators you want to be looking at
Desmume.
http://desmume.org/
Has a few forks these days but mostly for hacking and debugging (
https://gbatemp.net/threads/desmume-debugger-version-release.571995/ https://gbatemp.net/threads/unofficial-desmume-build-unused-memory-finder-tool.349332/ ), though there are others that increase the quality of 3d graphics by rendering at a higher resolution
https://gbatemp.net/threads/hi-resolution-ds-emulation.364549/
Development does seem to have stalled out but did pretty much all it needed to do by the time it had finished.
no$gba
https://problemkaputt.de/gba.htm
An old staple but still a good one that sees updates (though most of those are looking at DSi and now 3ds). Its debugging options went free a few years back as well (previously they were a paid option).
Some flank it with no$zoomer to tweak some things. Personally I don't but you do you there.
melonDS
http://melonds.kuribo64.net/
A newer emulator (and likely the only newer one to you) and still a work in progress but one people are keeping an eye on (some even claim it is the best choice but I will debate that one), and can do pretty well for a lot of games.
For emulators in general a lot of people these days look at all in one emulator programs like retroarch. They take care of a bit of setup for you but in the end they are still running the same emulators, just with a nice selector at first. It does however appear on a few more OSes more easily than other things.
Anything else (see
http://www.emulator-zone.com/doc.php/nds/ for a few of them) is probably an old emulator that might once have done something (a few had compatibility with certain games, or might have had some features that made it useful for cheat code makers, ROM hackers and the like).
If doing a phone/tablet then DraStic is what most would look at here. DSi and 3ds these days can skip the flash cart thing and go straight from SD card if you hack them. Wii U also has some options for emulation as well.