It only works if everyone does it, or if you're really well prepared and have irrefutable evidence of something. If you're the only one (or even part of a small group) calling them out you just get buried. You're basically a naive amateur working against someone who has spent their life focused on getting and exploiting power. It's literally what they live for.
Imagine a random guy wandering into an MMA cage and punching Connor Mcgregor in the face. Calling out sociopaths is the social version of doing that.
They're prepared, they'll have pawns that do all their dirty work, they'll have built up a network of obligations around themselves, they'll have taken control of whatever channels of information dissemination exist within the group and be actively shaping the narrative within the organisation. Standing up and pointing them out will get the whole apparatus focused on steamrolling you. It's nasty business.
Maybe it is better to try before walking away but there's a pretty big personal cost. I've done it and wasted huge amounts of time and energy and i have no idea whether it really made any difference in the end. I think there is an endless sea of problems and you only have a finite life and aren't responsible for everyone else's decisions. If everyone else is going to tolerate BS then who am I to try to change it? There are so many people, so many organisations that you could find a hill to die on every day of the week and probably make no difference to anything. I've come to the conclusion that I'm better off just dodging that stuff when it comes up and focusing on building up healthy, loving relationships among my community rather than trying to tilt against windmills in these hierarchical social organisations.
I think my motto is basically 'eh, fuck it, I'm off' when it comes to this stuff now. I think that's how you really beat it, don't play the game.