CP/Ms true claim to fame is being an evolutionary stepping stone in the fast moving microcomputer market.
In the early 90's we were in the midst of the Unix wars, where every Tom, Dick, and Harry was pumping out a random mini-computer running mostly kinda sorta portable Unix hoping something would stick, or at least provide service revenue.
CP/M filled that role, however briefly, in the late 70's, early 80's. While obviously not as portable across machine architectures as Unix was, the baseline 8080/Z80 machine was simple enough for folks to sketch out motherboards on a dining room table, and assemble machines from more and more available OEM parts. Anything to get a dart on the board and hopefully build a successful business model.
The robustness of this nascent machine market, empowered by the portability affordances of CP/M, enabled a generic software market that was hardware (though not necessarily architecture) agnostic. The world was moving so fast, it was important to have this kind of capability to help power through the chicken/egg problem of computers needing software needing computers.
However, at the same time, CP/M was too early. That's not quite fair, everything was early in that microcomputer space. But, like others, CP/M was a victim of its time, making early design decisions based on early computing where CPUs were glacially slow, and memory was staggeringly expensive.
This resulted in CP/M having to "hard code" a lot of fundamentals in its system. There simply wasn't the bandwidth or memory to do much abstraction. Flexibility breeds complexity and costs performance and memory, none of which the platforms of the time could really afford.
This made CP/M not just hard to use, but hard to evolve. As the machine world accelerated forward, it was not practical for CP/M to keep up.
Casually, at 10,000 feet, MS-DOS looks very similar to CP/M, both cosmetically at the command line, and internally. But both its file system and driver architecture was able to learn on the shortfalls of CP/M, and be more flexible and powerful, but at the same time, MS-DOS wasn't under the memory or disk space pressures of CP/M.
Then, the deathknell came with the PC showed up, and reset the baseline of what "every computer" would look and be spec'd like. That clobbered a lot of the early hardware vendors.
Oh, to be sure, for a short time, the x86 world was shaping up like the CP/M Z80 world. Different makers, with different hardware offerings, using MS-DOS much like CP/M was used.
But the PC platform as a de jour standard washed that away, and "PC Compatible" became the mantra, and those builders either had to jump on the "it runs Flight Simulator" bandwagon, or move aside.
CP/M, truly, today, has little charm. It's kind of awful. Launching CP/M on a 50Mhz Z80 connected to MBs of flash drives is not a good experience. Mainstream CP/M does not cope well with large volumes. It's really designed to work on a system with floppy disks and capacities in the 100s kilobytes, that are readily swapped out, not enormous spinning hard drives. And it doesn't even work well there. Don't forget to log in those new disks when you swap them out (^C as the command shell), or you will have disappointing results.
It's a artifact of its time. Decision made weren't bad decisions, they were just of the "how long should we make this buggy whip, and what kind of leather" decisions. Without CP/M, who knows where we'd be, what MS-DOS would have looked like, or anything. The PC and MS-DOS consolidating the PC architecture help revolutionize and propel the entire market. Rather than having a disparate array of incompatible hardware, operating systems, and software, the happenstance settling on the PC and MS-DOS as a lowest common denominator let the software and service folks innovate in that space without having to worry about, taking the time, or spending the money on what OS and platform to support.
Rising tide lifted all the boats, to the point of letting others in on the fringes.