Yup - that's correct! They are indeed "datatypes", and a primary motivation for declaring the type (rather than just using the raw, built-in type) is to maintain portability (among other things, portability for different sizes).
Strictly speaking, the "_t" usually means there's a "typedef".
Here's a bit more info:
http://www.trilithium.com/johan/2005/01/char-types/