For declaring structures, the style of declaring typedef struct _name {...} name
goes back to the days of GCC 2.0 or so, when as was mentioned above, you couldn't have an anonymous struct.
For names of ivars, the single leading underscore is an Apple internal coding convention, and officially speaking Apple reserves all names that start with single underscores. If Apple names all their ivars that way, then you won't collide with any of their names if you don't do it.
Unfortunately, many sample code projects have been published on Apple's developer web site without going through the code and removing leading underscores on ivar names. This happens for two reasons, the main one being that developers working inside of Apple are in the habit of naming their variables that way, and the other reason is that the people reviewing sample code projects haven't really cared much about enforcing a standard coding style.