The more interesting question is why line two gives an error.
You can specify an unknown type with an unbounded wildcard, which simply looks like <?>. An unbounded wildcard is essentially the same as saying <? extends Object>.
That would seem to allow both lines to compile.
You cannot, however, have a generic CONSTRUCTOR with a wildcard type argument. just remember "No Wildcards in constructors". Constructors of generic collections need concrete classes.
The whole concept of generics lives only in the compiler.
When you compile, the compiler makes sure your code is following the type safety rules you established on the field a2, which in line 2, you said "any object at all" on the left hand side of the equals.
One the right hand side, however, the compiler is trying to determine if the thing meets the requirements you established on the left hand side, and it can't.