The most important prerequisite for learning asm is having the dedication to master the very steep initial learning curve. You'll be doing a lot of reading before you can actually program something pratical. Once you've got a general "feel" for the language then things start to become really easy.
So if you're interested in PC Engine and Neo Geo, you'll have to learn 65SC02 and 68k assembly, respectively. I think 68k is somewhat easier for beginners, since it has a fairly straight-forward instruction set and loads of registers to play with.
Your starting kit should include an accurate emulator with debugging capabilities, a modern cross-assembler (preferably one that can link binaries into target-specific executables/roms/whatever), and a text editor that can show line numbers (and maybe even supports syntax highlighting for your asm flavor of choice). It's also a good idea to have opcode list for your target processor at hand, for quick reference.
A couple of tips I learned the hard way:
- Always comment your code. In the beginning, it's a good idea to comment every line. After a few days of not looking at it, even the most well-written asm code tends to present itself as an inprenetrable jungle.
- You'll have a lot of different files floating around, so organize your working directory well.
- Familiarize yourself with batch and/or shell script. Automatizing the build process with scripts will save you a lot of time on the long run.
I can't really point you to any good sites for programming PC-Engine and Neo Geo. I'm afraid a lot of good documentation might be in Japanese only. In any case tutorials for other systems won't be so helpful, especially not for SMS and GB. Might be good for a start, but otherwise you'll be wasting your time, because there are huge differences in programming the various 8-bitters.