There are several primary ways to run a Java Edition server:
1. Pure vanilla server.jar. Has horrible performance, little flexibility, but in the end, it Just Works. This is the server that Realms (Mojang's paid hosting service) uses. In recent versions, some modding is possible via datapacks.
2. Fabric Loader and some vanilla-compatible mods like Carpet etc. Here, "vanilla-compatible" means that a vanilla client can still connect. This is the preferred way of playing for the TMC (Technical Minecraft) community since the underlying server stays mostly vanilla, down to the smallest details and bugs, and no behaviors are changed. The TMC community becomes very agitated when someone tries to "fix" some bugs - they rely on those bugs.
3. Forge/Fabric with mods that change the gameplay, and require the mods to be present on both client and server. This is the traditional "modded" experience, as seen on TV.
4. Bukkit/Spigot/Paper/Purpur, various generations of server software that heavily patches the vanilla server, fixing bugs, adding new functionalities, and presenting a very comprehensive Plugin API, while still allowing vanilla clients to connect. This is the software used by servers that implement custom gamemodes, public servers that need griefing/duping/exploit protection. Many high tech farms don't work on Paper because of how many things it "fixes".
5. Folia - a fork of Paper that has multithreading support. It comes with its own can of worms.
Performance-wise, Fabric+Lithium is probably the most performant in the default configuration, though if you're willing to remove functionality, you can probably get better performance out of Paper (at the cost of losing gameplay features).
As for Bugrock Edition: well... there is Geyser that lets you connect to a Java Edition server with a Bedrock client. ;)
Adding on to yours, since right now you have the most complete background answer.
There's some history in the "Bukkit" family that might make their chaos make more sense.
In the beginning, there was Bukkit, which was a plugin API. And there was its reference implementation, CraftBukkit. It was very popular, Bukkit was the de facto API for server-side modding, and I made 50 bucks off of advertising revenue share for downloads of my plugin, which was a lot for me as a high schooler with one (1) year of java experience. Times were good. Where was I? Oh yeah.
So, for a long good while, times were swell. Then iirc Microsoft announced they were acquiring Mojang (I think this was the precipitating event? Someone correct me if not). And the main Craft/Bukkit guy threw in the towel and pulled a very clever poison pill: he DMCA'd his own repos. You see, Mojang essentially didn't care about server.jar distribution because they were a cool indie company. So CraftBukkit just included it. Which meant it was always in violation of Bukkit's GPL license since that code wasn't open source.
So anyway, CraftBukkit explodes in a supernova and the resulting stellar nursery produces Spigot which pioneered the distribution strategy that all successors would then use - they distribute a decompilation map and their source, then you run a jar that downloads server.jar and performs the unholy mixing of licenses on your machine.
This is where I left the scene so I only have a summary from here on out. Spigot is the main go-to for a while, but the stellar nursery is still hot, and so various creative differences produce Paper, which seems to have mostly caught on to replace spigot though it seems like spigot is still a nontrivial player as well. And these all still implement the same ole GPL licensed Bukkit API.
So Bukkit wasn’t the first. It was hMod in 2010. Everyone came over from hMod because hey0 disappeared for a hot minute in late 2010. Everyone from Bukkit came from hMod, although there were also holdbacks who didn’t like someone stealing the hMod community, but a gathering of major plugin developers and devs from hMod forced everyone’s hand (but also, hey0 disappeared for a relatively long time with no explanation).
hMod also had a problem: it didn’t attempt to reverse any of the code obfuscation from Mojang, so working with it was extremely difficult. When hMod came about, it predated the MCP project as well by like 3 months, which started as a major community effort to deobfuscate the codebase. Bukkit came after MCP and could take from it inspiration.
We are still in year 2010.
Fast forward many years later… Microsoft had nothing to do with what happened actually. Bukkit was secretly owned by Curse, and much later Mojang secretly bought Bukkit.
This secret sale pissed off a lot of the community and one of the core but non-OG contributors (Wolverness — he joined Bukkit much later) issued a DMCA against the codebase as a form of protest. This was obviously controversial but he also had a lot of support.
Mojang actually never substantially interfered with the wholesale illegal distribution of its source code.
Anyway, because Mojang was officially hiring the Bukkit team, but only limited to some members from the OG 2010 team, and with the other core contributors not being included at all, and with the DMCA taking down the repos, Bukkit became dirty and there wasn’t a future for Bukkit anymore. Spigot, which was then a performance fork of Bukkit, became the de facto successor (not to say that there weren’t many other options and competing choices in play too).
Spigot didn’t create their distribution strategy though. MCP did things this way.
I switched from Paper to Fabric +/- 3 years ago. It allows me to create better server-side mods than what I was able to make with the Bukkit/Spigot/Paper API.
Not that that API isn't impressive. I was also surprised to learn MCC uses it.
Minecraft server software marketshare is tracked with bstats. Paper (58.3%) is a fork of Spigot (21.3%) and is more open to contributions and has a lot more performance enhancements. Spigot continues CraftBukkit which implements the Bukkit API. Spigot only really exists to update to the latest game version and no longer receives performance enhancements. Purpur (10.1%) also exists and forks paper, and add gameplay features that couldn't be forked into Paper.
The largest non-bukkit competitor is Fabric, which is nice because by default it changes no gameplay behavior. Spigot and all forks change gameplay behavior to improve performance and make implementing the API easier in subtle ways. Paper is more suitable for a public server as it patches exploits by default while Fabric is better for a more technical or private server as it doesn't break vanilla behavior .
Bukkit-based servers can be made compatible with Bedrock edition with the Geyser plugin
Note that bstats only tracks Bukkit-compatible servers. It doesn't track Vanilla/Fabric/Forge/etc. installations, so take these numbers with a grain of salt.
The major competitors include Fabric and Forge, with each being distinguished primarily by the type /amount of extensibility they offer. Paper is focused on "backend only" modding (plugins), as opposed to the "full spectrum" modding supported by Fabric and Forge that often (but not always) require users to download the mods on their computer as well.
From that perspective, Paper is much more commonly used by commercial server owners (since they're catering to the very large audience of casual users who don't want to install mods) and casual users paying for a server host for their friends who just want a couple of small tweaks, while Fabric and Forge are generally used more by smaller groups of dedicated power users who want a lot of extra mods
Paper and Forge both focus primarily on providing a large extension API through modifying the decompiled Minecraft source code, while Fabric takes a different route by providing primarily an extensive dynamic Java bytecode modification library that allows developers to effectively "build their own API" by modifying the vanilla Minecraft classes at runtime. This means Fabric is generally much faster and easier to update to newer versions, and most smaller mod developers have adopted it as their preferred platform of choice due to the more powerful tools, and use open source libraries to make up for the lack of a built in API. (These are generalizations, of course, and Forge and Fabric have experienced a fair amount of convergent evolution at this point as well.)
On the performance side, there's a new experimental Paper-like server called Folia from some of the core developers aimed at providing radical parallelism. Normally, all Minecraft servers run their main gameloop on a single thread, and the largest of server operators deal with the issue by providing front end proxies that shard users to different servers, which limits interactivity. From a technical complexity level, you could almost compare it to a GIL-less server reimplementation. All, again, built as patches onto the decompiled Minecraft source code. It's gaining more stability and has been used in some very exciting public tests
As for competitors...well it is not really a competition -- it just depends on what you are focused on for your player-base. Paper is a performance-focused fork of Spigot which is an, to very loosely describe, "interface" for Bukkit. Bukkit itself is an API for Minecraft that interfaces with plugins/mods. If someone is running "modded" Java Minecraft, they are likely touching one of these, or even a fork of Paper.
Paper adds some features/tweaks on-top of Spigot and if your server is having some performance issues or you want a specific feature that Paper offers then you would utilize Paper. If you are fine on Spigot, you use Spigot.
Personally I have always used Paper when hosting servers, as performance (less "rubber-banding" with higher player-counts) was my focus in that time. As well Paper offered the configurable option of "per-player" mob spawning, so we did not have a single player that stood above a cave hogging all of the mob spawns.
Folia is probably the most interesting on this list - it's a mod by the makers of PaperMC to parallelize Java Edition while still maintaining a working survival experience. It's best known for powering 2b2t, a anarchy server with a current player count of 633 on a single survival world, with the world being roughly as old as Minecraft multiplayer itself (servers that are effectively multiple servers chained together have hit CCUs of 216k).
Bukkit is the name of the API for the server software Craftbukkit. Bukkit itself is not server software. Plugins targeting the Bukkit API can run on Craftbukkit, Spigot, Paper, etc. Plugins targeting Spigot API only run on forks of Spigot (if they use the parts of Spigot API that are not in Bukkit), but not Craftbukkit.