It depends on what exactly you're trying to hack, and whom your audience is. Yes, for hacks such as level and text-editors it's important to know C++, since you're going to want to make a nice simple to use GUI for fans to change the game. If however, you just want to make a few small changes you're going to need to probably learn assembly, and there's no reason to use C++ at all. Assembly can be pretty challenging for first-time learners. There's big and little endian, and short-hand memory addresses used in pointer tables. Just making a simple jump can be a real hassle, but assembly is easier than hex IMHO, and if you learn how to compile assembly files correctly, it's a lot more understandable than working with large chunks of hex.
My first hack was extremely small. All I did was add leg parts to this pre-made Megaman rom hack, but I had to learn where to find free memory space, how to use an if statement, and jump to subroutines. It took me about a week to learn how to properly find the right assembly commands, learn how to make a patch, which memory addresses to edit, getting ROM addresses from RAM addresses, learning all the proper terminology and sections of a rom game, how to use an emulator debugger, and then do it in hex and assembly.