O uso do Requirements.txt seria para definir quais as bibiliotecas necessárias para usar o aplicativo, já o setup.py seria usado para instalar o aplicativo.

Sobre os nomes, se pode colocar qualquer tipo, mas existe um certo padrão, sendo o __init__.py que serve para inicializar a aplicação, já o main, maioria das vezes sendo utilizado para ter as principais funções.