The differences are minor.
print() is a function and takes only one argument, a string. It also returns a result value (true or false) that you conceivably could test, although I've not encountered a situation where I wanted to do so.
echo is a language construct and can be passed a list of arguments, as in
echo "foo", "bar";
I've always suspected that the real reason for both of them existing is the way PHP has acquired little bits and pieces of other languages -- a little C, a little Bourne shell, a little Perl here and there.