What are the main differences among them? And in which typical scenarios is it better to use each language?
I wouldn't call sed a fully-fledged programming language, it is a stream editor with language constructs aimed at editing text files programmatically.
Awk is a little more of a general purpose language but it is still best suited for text processing.
Perl and Python are fully fledged, general purpose programming languages.  Perl has its roots in text processing and has a number of awk-like constructs (there is even an awk-to-perl script floating around on the net).  There are many differences between Perl and Python, your best bet is probably to read the summaries of both languages on something like Wikipedia to get a good grasp on what they are.
What are the differences between Perl, Python, AWK and sed?