Line edition, input history and completion are provided by the shell.
The terminal may provide its own line edition, history and completion instead, and only send a line to the shell when it’s ready to be executed. The only common terminal that operates in this way is M-x shell in Emacs.
Output: the shell emits instructions such as “display foo”, “switch the foreground color to green”, “move the cursor to the next line”, etc. The terminal acts on these instructions.
The prompt is purely a shell concept.
The shell never sees the output of the commands it runs (unless redirected). Output history (scrollback) is purely a terminal concept.
Inter-application copy-paste is provided by the terminal (usually with the mouse or key sequences such as Ctrl+Shift+V or Shift+Insert). The shell may have its own internal copy-paste mechanism as well (e.g. Meta+W and Ctrl+Y)