Tools

Writing code

First and foremost is a text editor, or better, an IDE. Your IDE/text editor might have GBz80 ASM highlighting support! (I personally use VS Code on Linux.)

Then comes the compiler (in the case of ASM, compilers are also called "assemblers", but you can use both). I use and recommend RGBDS, but some prefer wla-dx. I will be using RGBDS throughout this tutorial, but if for some reason you want to use wla, you will be able to follow (although you will have to make some adjustments).

Running code

You have three options to run your code:

Manipulations to run your code Debugging Platform accuracy Cost Notes
Emulator Basically none Depends if the emulator supports it Usually good but not perfect Free Everything heavily depends on the emulator
Console (with flashcart) Can be tedious No Perfect Up to €/$200, depending on what you have and want This is only recommended to complement emulator testing
Official devkit (IS-CGB-DEBUGGER) Not much Yes Perfect At least $1000 This isn't the best solution, but some devkits are circulating on eBay.
Also, this requires you to use ISAS, the official assembler -- which is worse than RGBDS and wla.

I strongly recommend using an emulator to run initial tests on your game, and optionally run it on console afterwards (to get what the game feels like on console, and to eliminate the emulator's inaccuracies). Or, if you really want to, you can buy a IS-CGB-DEBUGGER and use that -- but you'll have to use ISAS, and the debugger's ancient interface software.

Emulators

NameAccuracyDebuggerPlatforms
BGBExtremely goodYes, GUIWindows (x86), Wine
SameBoyNear perfectYes, command-lineMacOS, slightly inferior Windows & Linux
BizHawk (Gambatte)Extremely goodVery basic, GUIWindows