La differenza tra typedef struct e struct sta nel tipo di linguaggio usato.

In C, la sintassi
codice:
	 struct prova {
		int a;
		int b;
	};
provocherà errore, mentre in C++ no.

In entrambi i casi è possibile utilizzare typedef struct.
codice:
	typedef struct {
		int a;
		int b;
	} prova;
tutto qui.