A Unix shell is the program which reads user input from the command line and executes actions based upon that input.
There are two general families of Unix shells, the Bourne family and the C family.
The Bourne shell was the original Unix shell. The C shell was the first competing Unix shell.
tcsh is an improved variant of the C shell.
The Korn Shell (ksh) and the Bourne Again Shell (bash) are improved variants of the Bourne shell.
Other less popular shells include the zsh, rc, and es shells.
To determine what shells are available on your Unix system, view the contents of the file /etc/shells.
The decision on which shell to use is almost a religious preference, with Bash and tcsh being the current favorites.
Extensive information regarding Unix shells can be found in the Unix shell differences FAQ.