UML is messy, imprecise, complex, and sprawling. That is both a fault and a virtue. Anything intended for such widespread usage is going to be messy.
You don't have to know or use every feature of UML any more than you need to know or use every feature of a large software application or programming language. There is a small set of central concepts that are widely used. Other features can be learned gradually and used when needed.
UML can be and has been used in many different ways in real-world development projects.
UML is more than a visual notation. UML models can be used to generate code and test cases. This requires an appropriate UML profile, use of tools matched to the target platform, and choices among various implementation trade-offs.
It is unnecessary to listen too much to UML language lawyers. There is no single right way to use it. It is one of many tools that a good developer uses. It doesn't have to be used for everything. You can modify it to suit your own needs provided you have the cooperation of your colleagues and software tools.