That's not a bad analogy at all. A terminal can be considered as just a device to display information and receive it. It can range from a dumb terminal which dies nothing but interpret printable characters, to a behemoth with full cursor positioning and colour capabilities.
A shell, which often (but not always) runs in a terminal, is a powerful environment for interpreting commands and acting on them. You can consider most modern shells to be full-blown programming languages.
The basic idea behind an interactive shell is to accept those commands from the user (via the terminal) and act on them, either by doing its own stuff or running external programs to do it. A non-interactive shell is the one that generally runs pre-written scripts to perform tasks. Quite a few shell scripts will run without a terminal, since they have no need of user interaction.
Ubuntu's default shell is
bash although it's easy to change it to whatever you want.