Это называется
GNU/POSIX naming agreement - соглашение об именовании.
The requirement that additional types defined in this section end in "_t" was prompted by the problem of name space pollution. It is difficult to define a type (where that type is not one defined by POSIX.1-2008) in one header file and use it in another without adding symbols to the name space of the program. To allow implementors to provide their own types, all conforming applications are required to avoid symbols ending in "_t", which permits the implementor to provide additional types. Because a major use of types is in the definition of structure members, which can (and in many cases must) be added to the structures defined in POSIX.1-2008, the need for additional types is compelling.
Таким образом, для избежания пересечения имени типа с именами других сущностей, для имен типов определяется суффикс "_t".
Дополнительно,
GNU резервирует полностью все пространство имен для суффикса "_t" с целью расширения набора имен стандартных типов.
В общем, суффикс "_t" несет двойной смысл. Первое - он говорит что это имя типа. Второе - он говорит что это имя стандартного типа.