According to English Grammar in Use by Raymond Murphy (Second Edition), must and have to are used to say that it is necessary to do something. Sometimes it doesn't matter which one you use:
Oh, it's getting late. I must go/I have to go.
However, he goes on to explain that sometimes there is a difference and it's important to differentiate.
must is personal; we use must when we give our personal feelings (The speaker says it is necessary.): You must meet her.
- She's a really nice person.You must meet her.
- I haven't phoned Ann for ages. I must phone her tonight.
- I must get up early tomorrow. There are a lot of things I want to do.
have to is impersonal; we use have to for facts, not our personal feelings. You have to do something because of a rule or something:
- You can't turn right here. You have to turn left.
- George can't go out with us this evening. He has to work.
- I have to get up early tomorrow. My train leaves at 7:30.
I first learned of this grammatical "rule" when I started teaching English in schools and at the university level in Germany, where much, if not all, of the educational materials for English are written by German and British authors. I can only say that I'm an American and have always said have to; must is simply not in my vocabulary.
Most of the American teachers and lecturers I know here in Germany say they hardly ever use must in the context being discussed here. The British ones, on the contrary, say they use must in the context when the speaker thinks it's necessary to do something - that is, when the speaker is expressing his/her personal feelings. They have admitted, though, that they learned the rule when they started teaching English abroad.
Maybe usage is different in North America, or maybe just in the US, although Canadian and US varieties of English are very similar.
must
is a stronger form thanshould
, however in some circumstances,should
is used as an absolute command but is simply 'softer' or more polite. Equivalently, must can be used in a way that isn't an absolute command: "We must get together for lunch sometime soon" <- typically not an actual command of absolute certainty.