hash индекс строится в один поток, для них многопоточный create index не делали. Потому загрузка 100% одного ядра - ситуация нормальная.
Нет, create index не зависает.
Если у вас селективность поля хреновая - то hash индекс будет строиться медленно, т.к. много строк попадает в одно и то же значение хеширования. Не помню точно, как именно хранится список TID при коллизиях хеш-функции, но точно работает хреново при большом числе дублей значений.
Если версия postgresql достаточно свежая - то смотрите pg_stat_progress_create_index системное представление. Там будут некоторый progress reporting.