These are some related ideas, easy to conflate.
Terminal Emulator (aka, Terminal)
When people say “terminal”, they mean the terminal emulator. Terminals used to be a physical thing in the days of yore when computers were the size of houses. Terminal emulators (like Alacritty, Konsole, Windows Terminal, etc.) render a screen with a command line the way these old terminals used to provide.
Command Line
The command line is the literal line in the terminal emulator which accepts commands as inputs. Commands in a terminal emulator are usually written in a ’language’ like Bash, PowerShell, and POSIX sh. However, command lines can also be for other types of languages: Java, C, Python, R, etc. For instance, you can be in a terminal emulator typing Bash commands like pwd and ls on the command line, but then you type the command python and enter the python command line.
Command Prompt
Literally, it refers to the prompt at the beginning of the command line, prompting for your response. It can resemble something like this, ~/Desktop/Folder >>, or contain more information and decorations.
This is not to be confused with the Windows Command Prompt (“cmd.exe”) which is a command interpreter (aka, shell).
Command Interpreter (aka, Shell)
A shell, or a command interpreter, is a program that provides an interface between the user and the kernel. Note the shell and kernel metaphor. The kernel is the core program of the operating system; it has direct access to the hardware. The shell is in a layer above; it can communicate with the kernel, not the hardware.
Examples of shells include Bash, Zsh, Fish, cmd.exe, PowerShell, etc. And this is where the idea I shared about languages with regard to the command line can get confusing: these shells usually define a scripting language bearing the same name. The Bash shell uses the language Bash, Fish uses Fish, PowerShell uses PowerShell, cmd.exe uses Batch (a notable exception), and so on.