What's the purpose of TensorFlow specific data types?
In short because TensorFlow is not executed by the python interpreter (at least not in general).
Python provides but one possible API to interact with TensorFlow. The core of TensorFlow itself is compiled (written mostly in C++) where python datatypes are not available. Also, (despite recent advances allowing eager execution) we need to be able to first create an execution graph, then to pass data through it. That execution graph needs to be aware of datatypes but is language agnostic
For example, Why use tf.int32? Why not just use Python builtin integers?