This question is inspired by Umlauts in label and a quote from an answer to How to automatically add \! in subscripts?
However the best is to avoid
_in labels.
I already name all my labels with a "namespace" (like fig:, eq:, tab: and so on) and avoid umlauts (and Unicode characters anyway), but was wondering if there are more things to consider to avoid compilation errors and conflicts with loaded packages.
What rules and advises exist for naming labels to prevent errors and conflicts?