sh
(or the Shell Command Language) is a programming language described by the POSIX standard. It is a specification and has many implementations (ksh88, dash, …).
bash
started as an sh
-compatible implementation. bash
can also be considered an implementation of sh.
Because sh is a specification, not an implementation, /bin/sh is a symlink (or a hard link) to an actual implementation on most POSIX systems.
References
http://stackoverflow.com/questions/5725296/difference-between-sh-and-bash