M-x customize gives a menu to change those lisp variables people are always mentioning.
Also, the extended MELPA package universe. This and (use-package) allowing me not to worry about installing hundreds of packages really transformed Emacs into a productivity behemoth.
Run a shell (or shells) inside emacs. Great for long running apps like servers. You can search back through the output using normal Emacs search commands. For me, one of the killer features of Emacs.
Rename the shell buffer to something else to start another shell.
Both of those other modes have better support for curses applications and act closer to an actual terminal emulator than M-x shell does.
Also, if you like term, you can use the "multi-term" script (http://www.emacswiki.org/emacs/multi-term.el), which will automatically open a new terminal window with M-x multi-term, and you can cycle through your open terminals with M-x multi-term-next and multi-term-prev
My 99% use-case is running programs that don't need terminal emulator support, but I do commonly use Emacs keybindings for navigating around the buffer -- which requires switching between char and line modes when using ansi-term.
Generally I like to have bash available so that's why I use shell instead of shell.
Actually, it helps to be around other emacs users. I've seen people do something magic and I stop them so I can learn the trick. Usually they have to do it again before they can explain it because most emacs users have everything "in their fingers". Musicians are the same.
I would credit emacs with 50% of my productivity. Learn it well. It pays huge rewards.
I've been using vim + evil (and prior iterations of evil) for probably ~5 years now, and it really is the best of both worlds for me.
Also I can't suggest to use M-x customize because it writes some code into your init.el file. For me, it's important to keep this file as simple as possible with my code only.
But, in case if you're using Emacs for some simple stuff then M-x customize is ok.
M-x customize-variable RET custom-file RET
(setq custom-file "~/.emacs-custom.el")
 The only one I know about is `package-selected-variables`, which are "packages installed explicitly by user". It's used to make sure those packages are not considered unneeded if they aren't a dependency of anything.
I don't put the output customize.el under version control since I vary my settings somewhat from machine to machine, and I use version control to sync my emacs configuration. However the output is easy to mechanically transform into (setq-default) for things that I do want to synchronize.
(setq inhibit-startup-screen t)
C-h b shows all the key bindings, and C-h f will describe any command (and give access to the source where it was defined).
It is of course a classic design dilemma when porting something across dozens of different systems and supporting something across many decades, whether to try to adapt to the whims of a new target or to stick with a common core. Emacs will never be the Microsoft Notepad of the common computer user and we, the long time Emacs users, tend to see the stability of the interface as an advantage.
(I have been using emacs since 1996.)