Bei diesem konkreten Beispiel gibt es keinen Unterschied zwischen den Definitionen.
Aber vollständigkeitshalber:
Definition 1 darf eine beliebige Liste übergeben bekommen.
Definition 2 darf nur eine Liste bekommen, deren Elemente von Object ableiten
(Da aber in Java alle Klassen von Object ableiten gibt es für diese Beispiel keinen Unterschied)
Bei folgenden Beispiel gibt es sehr wohl einen Unterschied:
Java:
publicclassCar{publicstaticvoidprintList(List<?> list){....}publicstaticvoidprintList(List<?extendsCar> list {....}}