Is it secure to use hexadecimal data for IV instead of raw binary? Is it safe and secure to use a function like bin2hex (which converts binary data to hexadecimal) on the binary output of functions like openssl_random_pseudo_bytes and mcrypt_create_iv?

Meaning: can I use the hexadecimal output instead of the raw binary data, or is there some kind of security risk involved when doing so?
An initialization vector is, in fact, always binary.  It's just random bits.  So, if you choose to encode those bits as a hexadecimal string for ease of storage or transportation, that is fine.  However, since it is the binary that is the IV, you will need to decode it back from hexadecimal to a binary value before using it in the decryption process.  

As a note, you would certainly not want to use the binary values of the individual characters in a hexadecimal string as an IV, as that would limit you to a tiny set of possible IVs, much smaller than the space you need to generate IVs securely.