The obvious reason you might want a typedef like that is for a mostly-opaque data-structure, where you have several different implementations, some of which require a level of indirection, some of which don't. (The "mostly" in "mostly-opaque" is there to mean that calling code never accesses the type directly, but the type is complete, so the compiler can put it on the stack).
In short - pointer typedefs are good for the times when you really want to say "this is data of some type, maybe a pointer, maybe a struct, maybe an int".
(oh, and to add to your complaints about that code - _FOO is also a reserved identifier...)