Ambos verbos significan lo mismo en español: tener que, deber, haber de o haber que (hay que). Ahí radica, precisamente, la dificultad. ¿Cómo explicar cuándo usar cuál?

Para expresar una obligación impuesta por uno mismo se utiliza müssen.

Si quiero aprobar el examen.

Ich muss mehr lernen.

Tengo que estudiar más.

Para expresar una obligación impuesta por otra persona, se utiliza sollen. Así estás expresando claramente que lo está haciendo porque otra persona te lo ha pedido, pero tú realmente no quieres hacerlo, o te da igual o no te interesa o incluso te parece mal tener que hacerlo.

Tu madre quiere que apruebes el examen.

Ich soll mehr lernen.

Tengo que estudiar más.

Así se explica también su uso en órdenes en estilo indirecto (me han dicho que yo haga). Este sollen equivale en español a que + subjuntivo (que yo haga, que tú hagas, etc.)

Meine Mutter hat mir gesagt, ich soll mehr lernen.

Mi madre me ha dicho que estudie más.

También se utiliza para preguntar a otra persona si le gustaría que hicieras algo.

Soll ich das Fenster aufmachen?

¿Quieres que abra la ventana?

Consejos

Cuando estos verbos se utilizan en Konjunktiv II, expresan consejo (tendrías que/deberías).

Con müssen cuando el consejo es negativo e interrogativo.

Müsstest du nicht etwas mehr aufpassen?

¿No deberías/tendrías que prestar más atención?

Y con sollen cuando el consejo es positivo y afirmativo.

Du solltest etwas mehr aufpassen.

Deberías/tendrías que prestar más atención.