A subtle one: se tromper is to make a mistake, avoir tort is to be wrong.
When you say avoir tort, there’s an implication that the subject does or should feel regret or remorse in the eyes of the speaker. No such implication when you say se tromper, which can sometimes be benign.
Additionally se tromper is by definition unintentional, whereas avoir tort can sometimes be the result of a (wrong) intention.
For example you’d say
Jean s’est trompé de chemin, mais ce n’est pas grave car ça n’a pas pris plus longtemps.
This means that Jean made a mistake, and intended to take another route, but the mistake ended up having no consequence to the speaker.
Jean a eu tort de prendre ce chemin, car il y avait des embouteillages sur la route.
This means that Jean made a conscious choice to take a certain route, but it turned out not to be the best one in the end, so the speaker is feeling that Jean should have gone another way.