Cita: para consultas sirve igual definir una primary key que un indice (pero no se hacer consultas con ellos).
Al crear una PK postgresql automaticamente le crea un indice.
Cuando tu haces una consulta el planificador calcula si es necesario y mejor usar un indice o no, este trabajo suele dejarse al planificador, aunque puedes forzar el uso o no de un indice, pero no creo que lo necesites.
A parte de los indices que crea postgresql (al crear una PK, al definir un campo como UNIQUE), puedes crear indices en los campos que creas necesarios para mejorar el rendimiento de las consultas.
Salu2