"Bounded generic types" are normally used, to allow the parameter-types or return-types of a method/ or methods within a class to be inter-related.
Considering your example 1):
public <T extends List> void see(T n) {}
The generic type is bounded to be a subtype of List, so at the JVM level the compiled (raw) code & signature will be equivalent to example 2).
There are some subtle semantic differences in how "generic" and "raw" types are treated by the compiler, however. Conversion between "raw" and "generic" types typically a warning, as do unchecked generic type operations.
For code using generics properly, declaring List would (I understand) be preferable. Since there is no inter-relation between method parameters, the second style would be simpler.
My suggestion:
public void see (List<?> items) {}
The style in 1) makes more sense for inter-related parameters/ or result types. A couple of separate examples, showing more typical use:
public <T> List<T> getChildren (T parent);
public <T> List<T> listItems (T list1, T item2);
public <T extends List<?>> T combineLists (T list1, T list2);
It is probably more common to declare T as the item parameter, and genericize collections on that, than to declare T as a "collection type".