Müssen is quite more narrow in it's use:
Ich muss noch aufräumen. (I have to tidy up.)
This is a duty/necessity given to me by someone else or myself. I think that I have to fulfill it.
Ich muss den Kaffee ohne Milch trinken. (I have to drink coffee without milk.)
There is no milk left, so I have to drink coffee without milk. This is due to external circumstances.
Das muss Fred sein. (This has to be Fred.)
As I was expecting Fred, I reason that it is him.
When using „müssen“ as perfect auxiliary, this use remains as only option:
Die Strasse ist nass, es muss geregnet haben. (The street is wet, it must have rained.)
I reason that it must have rained as the street is wet.
Sollen is far wider. It is difficult to grasp, as there are many uses.
Ich soll mein Zimmer aufräumen.
I have to tidy up my room, but it is not as strict as „müssen“.
In Jerusalem soll sich mein Schicksal entscheiden. (My fate will be decided in Jerusalem.)
„Soll“ serves as a replacement for „werden“ (Futur) here. It can be used to talk about things that are supposed to happen in the future.
Dein Wille soll geschehen!
Here, it serves as a replacement for optative mood, which is usually conveyed by Konjunktiv I.
Er soll trinken. (He should drink or I've heard that he drinks.)
„Sollen“ is often used to voice out assumptions. This meaning is left when used as perfect auxiliary:
Er soll getrunken haben (I've heard/I assume that he drank.)
I think that „sollen“ is the most difficult modal verb.