The first UNIX was at AT&T. The first shell was Bourne shell. It was very cool, but it had some serious limitations.
When the guys at Berkeley started playing with UNIX and tried to make it better, they came out with the C shell. It had a different programming language (though also flawed in it's own way) but was much better at interactive use. Because of its advantages in interactive use, it became very popular in any UNIX that descended from Berkeley UNIX.
C shell (or csh) spawned an open source clone called tcsh. If you use csh, you probably don't use 'true' or original csh, but tcsh.
Meanwhile, the UNIX guys didn't just sit on their hands. Dave Korn (nice guy) created a new shell called... Korn shell. It followed the programming model that Bourne shell created (arguably superior to the csh model). It became very popular, became many people's day to day shell. It became part of the UNIX spec as well. This spawned a fairly popular open source clone called pdksh, which is pretty close (thought not 100%) compatible. Eventually AT&T released the code as open source.
The GNU guys wanted to make their own UNIX-ish system, so they needed a shell, one they could include without worrying about licensing issues. They created bash, the Bourne Again SHell. Mostly compatible with original Bourne, and taking ideas from both Csh and Ksh, it became popular both because of ease of use, and because it came with every Linux. There have been several versions, version 2 is the first very usable one, and it's now on version 4 with new features.
Then there came zsh. It too followed Bourne shell syntax, and copied what was good in Bourne shell, ksh, csh, and bash. It has, arguably, the most advanced syntax with features not found in other shells.
TL;DR So, what to use? If you are coding a startup script, you want to use /bin/sh, which is POSIX/Original Bourne compatible. The language is sparse, but it will run, even if disks such as /usr aren't available.
If not a startup scripts, you have a bit more choice. If you're on just your machine, use anything that's currently available. You control your machine. If you're writing for giving away to other people, I'd use /bin/sh or bash. /bin/sh though simple, is always available. bash is open source, so almost always available, is old enough to be everywhere, but new enough to have some new features. Csh is not available everywhere, and neither is zsh.