zsh, fish and bash: Which shell fits?
In short: The shell is the program that accepts terminal commands; bash is the standard, zsh and fish offer more comfort in completion and customisation.
In more detail: When you type in the terminal, a shell (command-line interpreter) works. It starts programs, evaluates variables and loops and reads scripts. The choice affects comfort and script behaviour.
In Depth
bash
Bourne Again Shell: standard on most Linux distributions and long on macOS. Very widespread, scripts run almost everywhere. Configuration in ~/.bashrc. A good base but without many comfort features out of the box.
zsh
Since macOS Catalina the Mac’s default shell. Largely bash-like but with better tab completion, spelling correction, extended globbing and themes/plugins. The framework Oh My Zsh (or lighter: zinit, Prezto) adds prompt designs, Git display and plugins such as autosuggestions and syntax highlighting. Configuration in ~/.zshrc.
fish
“Friendly Interactive Shell”: autosuggestions, coloured syntax highlighting and good completion immediately without setup. Its own simplified syntax (not POSIX-compatible): bash scripts do not run unchanged. Good for interactive daily use. Configuration in ~/.config/fish/config.fish.
Others and recommendation
PowerShell (objects instead of text, Windows and cross-platform), nushell (structured data), dash (fast, for system scripts), sh (standard interface). Rule of thumb: write scripts in bash/sh (#!/bin/bash), use your favourite shell interactively. With echo $SHELL you see your current one, with chsh -s /bin/zsh you switch. Aliases (alias ll='ls -lah') and functions in the configuration file save typing.
See also: bash, PowerShell, Writing shell scripts, Dotfiles, tmux and screen