объясните, пожалуйста, смысл ролей в постгрес
Пользователь - это алиас для системы ролей.
необходимо создать базу данных с тем же именем, что и имя роли, к которой можно будет осуществлять доступ с помощью этой роли
Это ложь. Необходимости нет.
Поэтому для созданного нами ранее пользователя с именем sammy соответствующая роль будет по умолчанию пытаться соединиться с базой данных sammy
А это верно. Но только если имя базы для подключения не переопределено, например, переменной окружения
PGDATABASE. Ну и конечно его можно просто задавать аргументом подключения.
можно ли так: несколько ролей и одна база данных?
Разумеется. Хоть дерево со множественным наследованием ролей.
Только важный момент - роли глобальны в пределах кластера. Вы не можете сделать пользователя user в базе foo с одним паролем и пользователя user в базе bar с другим паролем. А вот дать readonly на одну базу и полные права на другую - это пожалуйста.