There is an ongoing debate over the safety of 0 confirmation transaction in bitcoin. Well I'm going to tell you the reasons they are safe to accept in most cases. Well at least in bitcoin cash where there is no RBF. So lets take a look at some use cases and why they are safe to accept .
Retail stores: Let's face it we live in an age where nearly every store has security cameras watching your every move at least at the checkout. I don't care if it's the corner bar or your local superstore there are probably cameras watching you. Bitcoin transactions are on a blockchain. That blockchain contains time stamps. You send a transaction and it's relayed in a few seconds. So there you are at the register. The store has a transaction with a timestamp and a video camera with a timestamp. You double spend that transaction and the police will be looking for you. In this case it's even safer to take than cash as the cash could be counterfeit.
Online retail: They aren't going to ship in seconds so this one is easy. They just wait for the confirmation so not even a need for 0 confirmation here. Even if they took it as 0 confirmation they could cancel the order before it left the warehouse.
Digital delivery: Things like video games, movies, music. Most of these are licensed. Those licenses can be revoked. Double spend that steam game (if they still took crypto) and your license would be revoked before you finished the training mission. Enjoy that movie? Well it gets cut off mid play. You get no more than a trailer. With music you might get away with a song or 2. Still they are probably going to have personal info especially if you used a cell phone. Worth a criminal record and huge fine?
Online services. This is where it gets tricky. Real time services are where 0 confirmation is going to always be tricky. If identity is required then they are probably safe. Anonymous sites are where issues with 0 confirmation may present themselves. There can be work around such as limits on spending until confirmation or no withdrawals. This is a risk reward trade off scenario for the business. There will always be people trying to cheat the system. The good thing is when blocks aren't full and there is no RBF the chances of a double spend succeeding are relatively low.
So when people say 0 confirmation never worked and can't work remember the above. Sure there are some cases where the risk of 0 confirmation may outweigh the reward but not many. It did work before and it still does at lest when blocks are not full due to artificial limits.
Image source localbitcoins.com