That's essentially what Mutt does. But you could also use other programs to parse and read each email file if you wish. "Fetching email" can also be a different thing. I use offlineimap for that purpose and store my messages in the Maildir format.
> And "writing an email" another thing?
Yes. Even "sending an email" is another thing. The program that edits my emails (vim) is not the same program which sends them (msmtp).
> What about "spellchecking the email"?
I don't do this (with a program), but I assume you could just do it within Vim.
> What about "managing all my email contacts"?
I use OS X Contacts for that, so there's a command-line tool that allows me to search for and then insert those contacts in Mutt.
> What about "back up my emails"?
Again, another program! I keep my Maildir synchronized to my home server and all my other computers using BitTorrent Sync. Changes are backed up with Arq to Amazon Glacier every day.
> What about "sign email with GPG"?
Definitely its own program, although Mutt includes support for it you still need GPG installed and everything set up for that stuff in order to sign your emails. This is true for every other email client isn't it? I know I have to instal GPGMail to get the same functionality on Apple Mail.
So you see, all of these tools are really separate processes in and of themselves. The benefit to all of this is when newer and better technology comes around, you don't have to wait for your software vendor to support it. Instead, you just use a different program that follows the same standards, which have been around for decades. Some people, probably most, find this to be an unacceptable burden. For that, there are definitely great email clients out there like Nylas N1 and Google Inbox...but if you want total control in the same sense that you get from your shell and your editor, Mutt is the client for you.
But no mention of OS X contacts integration. Care to share how you do it?