La diferencia aquí es que en el primero, especificamos que el llamante debe pasar una instancia de objeto (cualquier clase), y obtendrá otro objeto (cualquier clase, no necesariamente del mismo tipo).
En el segundo, el tipo devuelto será del mismo tipo que el especificado cuando se definió la clase.
Example ex = new Example<Integer>();
Aquí especificamos qué tipo de T será que nos permite imponer más restricciones en una clase o método. Por ejemplo, podemos crear una instancia de LinkedList<Integer>
o LinkedList<Example>
y sabemos que cuando llamamos a uno de estos métodos, obtendremos una instancia de Integer o Example.
El objetivo principal aquí es que el código de llamada pueda especificar el tipo de objetos sobre los que operará una clase, en lugar de depender del tipo de conversión para aplicar esto.
Ver Java Generics * de Oracle.
* Enlace actualizado.