Innanzitutto buongiorno a tutti voi.

Per quanto ho potuto leggere e capire pure io, la differenza sta nel fatto di poter eseguire delle operazioni di tipo generico.
Infatti se nel codice ho
Codice PHP:
public List<TmyFunctionT parametroGenerico ){
T temp parametroGenerico;
/* Effettuo farie operazioni su Temp */
return new List<T>();

Ignora che non voglia assolutamente dire nulla il codice, ma quello che volevo farti capire è che dichiarando un tipo T io su quel tipo posso effetture delle operazioni che so che vengono supportate ( per esempio tutti i metodi della classe Object ) oppure se so che T extends MiaClasseAbstract.
In questo modo elaboro il tipo T.

Mentre nel caso in cui faccio List<?> non posso dichiarare come fatto prima
Codice PHP:
 temp parametroGenerico
Capisci che sarebbe insensato....

Spero di esser stato chiaro ed esauriente....