It's a mixed bag. In practice I often use it for brief ad-hoc tasks and a "real" terminal emulator for longer running tasks like a Phoenix server or tasks that don't involve Emacs. It's great if I need to quickly poke around directory trees, cat files, delete files, etc. Dired can do some of that too, but it tends to create a lot of buffers and I'm already comfortable with the shell.
My default shell in Ubuntu is currently zsh, and elisp respects that. It even loaded the environment variables configured in my ~/.zshrc. I'm not sure whether it's inferior to an external terminal in any way other than being slower. Emacs isn't very good with concurrent tasks, unfortunately.
Other benefits off the top of my head include elisp evaluation and a full-blown Emacs editing experience. In a vanilla terminal if I want to search the stdout of some command, for instance, I often end up running it again with a pipe into less so I can use the '/' search command. In eshell I can use all the standard Emacs features by default. Readline support in terminals goes a long way, but it's not quite the same as having an Emacs buffer.
Excellent. I tend to use
emacs -nw when I want a terminal session; otherwise, it defaults to GUI like you said.