Как правило, оба глагола müssen и sollen переводятся на русский язык одним словом - "должен", однако в немецком выбор того или иного глагола обусловлен смыслом фразы.
müssen - означает долженствовать по возникшей необходимости, в связи с моральным долгом, т.е. по какой-либо собственной, внутренней причине.
sollen - означает быть должным, обязанным по чье-либо просьбе, поручению, приказу, т.е. находиться под влиянием внешних факторов.
Примеры:
Wir müssen sie auf dem Bahnhof treffen. - Мы должны их встретить на вокзале. (моральный долг)
Er muss in die Stadt fahren, um ein Werkzeug zu kaufen. - Он должен ехать в город, чтобы купить какой-то инструмент. (ему приходится, хотя никто его не заставляет)
Du sollst diese Arbeit heute vollbringen! - Ты должен сделать эту работу сегодня! (приказ)
Wenn sie mit dem Zug fahren wollen, dann sollen Sie eine Fahrkarte kaufen. - Если вы хотите ехать поездом, тогда вы должны купить билет. (такие правила)
в некоторых случаях возможно использование обоих глаголов, например:
Sie müssen in die Schule gehen. - Они должны идти в школу. (потому что сегодня они участвуют в школьном спектакле)
Sie sollen in die Schule gehen. - Они должны идти в школу. (потому что сегодня понедельник)
При употреблении в Konjunktiv Imperfekt sollen аналогичен английскому should и переводится, как "следует", "следовало бы":
Ich sollte das Zimmer aufräumen, aber ich habe dafür keine Zeit. - Мне следовало бы убрать комнату, но у меня на это нет времени.