Yes, the terminal emulator and the shell are two different programs. As you're aware, one example of the difference is that launching a terminal window can run different shells depending on what you have configured (bash, tcsh, ksh, ash, even python!).
Another difference is that there are more terminal emulators than just the default: gnome-terminal, several varieties of xterm, konsole (for KDE), etc. (see: http://www.howtogeek.com/howto/ubuntu/set-the-default-terminal-emulator-on-ubuntu-linux/ ). Any shell can be run in any of these terminal emulators, without much difficulty.
A third difference is that, besides running shell commands, you can also start certain interactive applications in your terminal emulator, and they will run in the same window (and still relying on the same terminal emulator program to handle the actual graphics), such as the vim text editor, the nethack RPG, and others. If you wanted, you could set up a profile in your terminal emulator to start nethack, say, automatically when you opened a new tab; no shell involved, but the terminal emulator is still the same program.
A fourth difference is that you can perform remote logins, using a program like ssh, from inside a terminal window. In this case, your shell (or whatever program you run remotely) is running on another computer, and the ssh program connects it to the local terminal emulator program running on your machine which handles graphics.