For what it does, Bluetooth works fine in my opinion. We expect Bluetooth to work like magic and to follow all the standards but we also expect it to work around issues we have with the standard (codecs, interference, etc.) because we don't want a bad experience. You can't have both!

If you stick to the stuff that works with every device (no automated switching, no proprietary codecs, no out of spec bandwidth and timing requirements) Bluetooth works quite well in my experience. Only when companies try to invent their own solution or very cheap, crappy, standards avoiding devices get involved does Bluetooth really start to break down.

Another issue is driver stability. I swear to god, Windows just hates Bluetooth. Somehow, Windows drivers for even common chipsets are worse than Linux drivers. On the other hand, on some Linux kernels, having Bluetooth on while putting a device in sleep can cause a kernel panic... It's all so unstable. There's nothing in the spec that says your software must hang and become unresponsive when an (un)pairing attempt fails, but here we are!

As for some of your complaints:

- connecting devices will make them behave like they were made to do. If they play default music, that sounds like a product feature that's off, not a protocol problem.

- pairing multiple devices is not governed by the spec (nor should it be, in my opinion). What a device will do depends on what makes sense for a device; a party speaker may want to connect to whatever device is available, but headphones or a keyboard prefer connecting to the device they were last connected to. Again, this is more of a device implementation feature, not really a protocol thing.

- connecting multiple headsets to a device is possible. In fact, I've done so in the past. You're limited by the throughput of your Bluetooth version (quite high, these days!) and any interference, but there's nothing preventing a device from playing to two devices at once. In Linux you can create a dummy device to stream to multiple audio endpoints through some config or command lines; on other platforms you'll need custom applications. This is an OS design issue, not a protocol issue, and it's no different from playing audio to both your TV and your headphones (quite useful for watching movies together with people with hearing aids and the like!)

- Can't connect multiple devices to one headset: this is a protocol issue. Devices join a piconet which needs to be synchronised and is controlled by a single master device. In theory that master device could be your headphones, with both other devices acting as clients, but in practice this is often not the case. Such a system can be quite finicky to work with when one or both devices go out of range or if multiple devices try to send high definition audio over the same channel at the same time.

Like all things Bluetooth, I've often wondered why WiFi Direct hasn't been more of a success. It'll eat more power, but it solves so many issues with Bluetooth, especially with modern 5.2GHz WiFi. For battery life purposes we'll be stuck with Bluetooth for a while, but I'd like to see WiFi Direct get a second chance for sharing files. Hell, it could even work as a cross platform Airdrop alternative (though Apple will obviously never join in).