With typedefs there are not name conflicts. As I said, using WTpes.inc,
int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
becomes
int MessageBoxA(sys hWnd, char* lpText, char* lpCaption, uint uType)
You would have conflicts if you will use #define or macros, because then it will become
int MessageBoxA(sys sys, char* lpText, char* lpCaption, uint uType)
Like #define and macros, typedefs do text substitution, but only if it is a data type, not the name of a variable.
Its usefulness is that you don't need to translate/adapt the C declares, structures, etc., but you can copy and paste them and the typedefs will do the substitution. If Charles implements them in the compiler, it would be a welcome addition to the O2 support for C headers.