It is definitely possible to do all the things you want to do with
Mutt, and much more.
Multiple accounts are possible with
Mutt. Personally I have only used multiple gmail imap accounts, as described in this article here, but it is feasible to set them up and move between them. It is not necessary to repeat the information here, but it has a lot to do with how the 'account hooks' and 'folder hooks' are set up; the article explains it well.
However, you can achieve it without
folder-hooks: see my answer here:
To navigate between folders, you can use macros, as these well known ones demonstrate:
macro index,pager gi "<change-folder>=INBOX<enter>" "Go to inbox"
macro index,pager ga "<change-folder>=[Gmail]/All Mail<enter>" "Go to all mail"
More on how to move between folders and how messages can be moved across folders is explained here in great detail.
Indeed, messages can be exported from
Thunderbird in the
mbox format and then read in
Mutt, as the Mutt wiki notes here. It will be necessary to install the
Thunderbird import/export addon and then export the folders from Thunderbird in
mbox format and then specify the folder in the
.muttrc, by refering to these notes.
Referring to your question in the comments: When you load up your inbox or when you switch between folders
Mutt by default only loads the headers from the server, which I think is what you want. It only downloads the actual message when you click return to view the message. Hence, why we cache headers and messages for performance, and usually most people have standard entries like this in the
For offline availability, you may need to pair
Mutt with another program called
offlineimap, which is available in the repositories; a discussion is available here and here.
I've put these hints together (from the wiki and my own personal rc) into a rough
muttrc but you may have to test and modify it for your own purposes, and obviously add your own details, but it should be a useful starting point.