I think the most important piece of info you have to keep in mind is that the operand on top of the indented block is the one that connects all conditions on that level.
Each new level of indentation can be seen as a logical block of conditions - evaluated by applying the operand above between all of them.
This sounds a bit confusing but is actually simple and it helps (at least me) to read the conditions in blocks. Then you can get crazy about it as @log1c already said.
But, at the same time, don’t hesitate to make a step back and review the logic of your service or host vars for example if you find yourself with real complex assignment rules. This might be an indicator that you should simplify the host or service configuration and make your life easier.