Технически говоря, нет никакой разницы, потому что вы не можете вводить две разные сущности в одну. Давайте посмотрим на пример ...
typedef char a;
typedef char b;
typedef a b, c;
Это определение работает, но если заменить вышеприведенное определение на это
typedef char a;
typedef char * b;
typedef a b, c;
Ошибка 1 ошибка C2040: «b»: «a» отличается по уровням косвенности от «char *»
Другой
typedef char a;
typedef int b;
typedef a b, c;
Ошибка 1, ошибка C2371: «b»: переопределение; различные основные типы
Таким образом, анализируя эти вещи, можно определить только один и тот же тип.