Print — показывает что-то на экране и не возвращает значение, с которым можно работать дальше. Только инфу и всё.
Return — передаёт результат работы функции обратно туда, откуда она была вызвана, и возвращённое значение можно присвоить переменной, использовать в других функциях или операциях.
Print бесполезен в любой задаче, где результат функции нужен для дальнейших вычислений или действий, при создании модулей и библиотек и при тестировании кода.