You can use a generic type on either a class or a method - this is using it on a method. It means the method has been written to accept multiple argument types.
What it means in this case is roughly: "you can call fromArrayToCollection with any array and any Collection as the arguments, as long as the type of the array is the same as the type of the argument".
The method without the <T> following the 'static' is a generic method in a generic class, where the class has been declared to use 'T' as a generic type. Because the class declares that it's using 'T', the method can just use it without declaring it.
The method with the <T> following the 'static' is a generic method in a class that has not declared 'T' as a generic type. You can have a generic method in a non-generic class. The <T> declares that the method will be using 'T' as a generic type. The method needs to declare this because the class doesn't.