Without going too far into specifics, the bash shell is based on the bourne shell used in the early implementations of UNIX. This shell is found on nearly every POSIX (modern unix standards) compliant machine today with the name sh. Chances are if you're not using Windows, your machine has the bourne shell.
Bash was made later to improve on the bourne shell. It's a play on words: borne again shell. It added a lot of new behaviors such as moving the cursor with the arrow keys, tab completion, and some extensibility. When sh was made, computers did not have arrow keys, so many of these movements we know today weren't possible. Today, bash is the most widely used POSIX shell.
ZSH is the z shell. It was made to improve user friendliness of the bash shell by adding themeing, more intelligent tab completion, error correction, and some other goodies. It was made the default shell of macOS in the last year.
FISH is where things reach a more modern end. The friendly interactive shell was made all the way back in the 1990s as a user friendly interactive shell. It added autocompletion, even more extensibility, internal organization of shortcuts and variables, and so much more I can't recall all of it. It, however, is different than the others above because a script made for bash will likely not run correctly in fish. Sometimes improvements mean deviating from the standards of the past.