What's the difference between binary hacking and using a decompilation/disassembly?
"Binary hacking" in a nutshell can be defined as using various tools to edit a .gba or .gbc file to get the results you want.
If you use a decomp/disasm, the difference is that you're editing the source code in order to build your own custom ROM.
But why would I bother doing this? There are several advantages, some of which are listed below:
No more dilemmas about free space and offsets.
The building process takes care of everything for you. Worries about repointing, accidentally overwriting something or finding free space are a thing of the past!
No more needing a hundred tools to edit various things.
Instead of sprite inserting tools, trainer data editors, sprite editors and scripting tools, all you'll need for the most part once you've set everything up is PoryMap for Gen III/PolishedMap for Gens I&II, a decent graphics editor such as GraphicsGale and Notepad++ for the majority of your hacking needs.
No more manual backups.
GitHub makes it really easy to revert to previous versions or have specific working branches.
Up to date instructions for setting up the disassembly or decomp you want to use can be found here:
A general guide for how to use GitHub, as well as various explanations for how it all works, can be found here.
More in-depth tutorials can be found on each repository's respective wiki page. These are updated pretty religiously, so make sure you check them often!