A terminal is a physical device with a keyboard and screen connected to a computer running various OS types. A tty is the Unix device name for a physical or virtual terminal connection. A shell is the Unix command interpreter. A console is a generic term for a primary i/o device or interface. In unix terms the console is where the boot/startup messages are sent to. After bootup the console effectively becomes a terminal.
//===========================\\
|| Terminal ||
|| |-----------| ||
|| Keyboard--->| Input |-++->|---| |-------|
|| |-----------| || |tty|<=>| shell |
|| |---------|<------++--|---| |-------|
|| Print<--| Output | ||
|| |---------| ||
|| ||
\\===========================//