A role is a filesystem convention: Ansible looks for the known subdirectories and loads main.yml from each one present. galaxy_info in meta/ is optional metadata for publishing, a requirements file is how you fetch someone else's role, and nothing needs publishing to work locally.
Official docs