In old times, a terminal was a textual device connected to a computer: initially a mechanical teletype, later a video termnal. The abbreviations
tty (TeleTYpe) and
vt (Video Terminal) still come from this era.
The console was initially the switches and indicators available literally on the console panel of the computer (here is a picture of the front panel of an PDP-11/20, which ran the 1st edition of Unix in 1972). Later it was used for a special teletype/terminal attached to the computer. The operator could use the console to perform privileged operations.
Again later on, hardware terminals were replaced by terminal emulators like
xterm: GUI programs the allow you to type text and see the response, communicating with the rest of the system through a bi-directional character based channel just like old teletypes and video terminals over serial lines.
So for Linux on the PC, the question was what should replace the console terminal of older computers. The obvious solution was to use the existing keyboard and screen, but that was a bit limiting because there would be only one console for system usage, and no other terminals to do actual work on. And home users didn't have extra terminals they could connect to serial lines. So the virtual console was invented: Several console (as in "on the front panel of the main computer") terminals you could switch between with the Ctrl-Alt-Fn combination. Then came X, and one of the virtual consoles was used to start X, so "X ran on a virtual console", and at that point the old terminology didn't make much sense anymore. :-)
Therefore today, often console and terminal mean the same thing. But there are still difference when referring to established parts of the system: It's the terminal database for control characters (termcap,
TERM variable). The device that controls the currently active virtual console under Linux is
tmux uses the same multiplex idea as the virtual console, but not on a real PC keyboard and monitor, but inside an existing terminal. So you can use one terminal connection, no matter if it runs inside a terminal emulator, a video terminal connected to a serial line, or a Linux console, to run multiple terminals.