I used to use Emacs for all of those things and more.
I think I used Emacs as my email client for around 20 years. There was never really any email client that did IMAP well and storing mail locally doesn't work when you have a couple of laptops, two home machines you use for work, a couple of workstations at work. I can't remember which email client I originally used, but over the years there wasn't much left of it since I had rewritten large parts of it to offer tolerable IMAP support that could deal with having 3-4 different accounts for work, personal, hobby etc.
What broke things was when maintaining a mail infrastructure became too much work and I that I had to use services for work that didn't play nice with most mail clients.
And this sucked since I had something like 10kLOC of elisp to deal with sorting, categorizing, prioritizing and filtering email. So I had this specialized email client nobody was willing to touch (can't blame people since the code was probably garbage) and I had a choice between continuing to spend time maintaining it and just use more convenient options.
It depends on what people think when they say IDE.
I would say I used Emacs as an IDE for C, C++, Java and to a certain degree, Go. For me an IDE needs to do syntax highlighting, have some semantic understanding of the language, be able to do sensible completion, understand symbols (find definition, find uses), show me documentation, interface with version control, be able to do simple refactoring, run builds, tests, perform debugging etc. It doesn't matter whether it is a clicky or GUI'y interface - what matters to me is that I can have 90% my needs as a developer served within the same environment.
Or let me put it another way: I don't use VS code for anything I didn't use Emacs for in the past when I develop.
But the thing is that Emacs doesn't have enough active developers maintaining stuff. For instance, if you program Go, things worked okay - and then the semantic bits moved to language servers and Emacs extensions were slow to adopt this. Making Emacs a lot less useful. Every so many weeks you'd sit down a weekend to try to cobble together something that would minimally work and it became tiring.
And yes, a lot of basic stuff is missing or simply just too low quality. From how you configure stuff to how you install and manage extensions to how you manage configuration across workstations. This isn't a new problem and the fact that Emacs has struggled with this for too long suggests that you won't see this solved in, for instance, GNU Emacs any time soon.
If you are a developer today learning VS Code is a better investment than learning Emacs. It has nothing to do with disliking Emacs - it is a simple matter of what environment manages to attract a sufficiently large active developer base for developing extensions and tools.
As I said, I still love Emacs. But evolution is making it a dead end.