La diferencia aquí es que en el primero, especificamos que la persona que llama debe pasar una instancia de Object (cualquier clase), y obtendrá otro Object (cualquier clase, no necesariamente del mismo tipo).
En el segundo, el tipo devuelto será el mismo tipo que cuando se definió la clase.
Example ex = new Example<Integer>();
Aquí especificamos qué tipo T será el que nos permita 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, recuperaremos una instancia de Entero o Ejemplo.
El objetivo principal aquí es que el código de llamada puede especificar sobre qué tipo de objetos operará una clase, en lugar de depender de la conversión de tipos para hacer cumplir esto.
Ver Java Generics * de Oracle.
* Enlace actualizado.