Yes, that is safe, meaning that it cannot damage your database and that the index will be correct once the statement succeeds.
Creating an index uses I/O and CPU resources, that is unavoidable.
CREATE INDEX CONCURRENTLY fails, it will leave behind an invalid index that you should drop, since it uses space.
CREATE INDEX CONCURRENTLY will require an
ACCESS EXCLUSIVE lock on the table, but differently from a normal
CREATE INDEX which locks the table for the whole duration of the operation, it takes only a very short lock at the very end. This is normally not a problem, but it can be a problem if you have long running transactions that use the table:
CREATE INDEX CONCURRENTLY will have to queue behind these transactions, and all later statements will have to queue behind it.
So make sure you have no long running transactions.