Если вы внимательно прочитали все, что я написал выше, то отличие be supposed to от have to и must для вас должны быть (по идее) очевидны. Но на всякий случай уточню.
Читайте также: Модальные глаголы в английском языке.
Must – это жесткая форма выражения долженствования, обычно связанная с моральным долгом.
I must obey my lord. – Я должен подчиняться своему господину.
I must do my duty. – Я должен исполнять свой долг.
Have to – тоже выражает долженствование, но, скорее, с оттенком вынужденности.
I have to obey my lord. – Я должен подчиняться своему господину (мне приходится, я обязан).
I have to do my duty. – Я должен исполнять свой долг (возможно, я этого и не особо хочу, но меня особо и не спрашивают).
Be supposed to – выражает скорее не долженствование, а ожидание выполнение какого-то действия.
I am supposed to obey my lord. – По идее, я должен подчиняться своему господину (а на деле, возможно, и не подчиняюсь).
I am supposed to do my duty. – Я как бы должен исполнять свой долг (но если разок не исполню, и никто этого не заметит…)