Collection<Object> is just that - a Collection with generic type Object. You can retrieve elements as Object references and put any object in it.
Collection<?> is a Collection with an unknown generic type. It could be Integer,
String or anything else. Since the type is unknown elements can only be retrieved as references to the common super type -- Object. However, since you don't know the type you can't add anything but null. Anything else might lead to problems later on (e.g. if the actual generic type is Integer and you add a String -- oops!).
So that's the difference: with <?> you can't add anything, with <Object> you can.