Variável do tipo interface

Alguém pode me dizer para que serve uma variável do tipo interface?

Alguém pode me dizer o que acontece aqui: Connection conn = DriverManager.getConnection(url, user, pass);

Muito obrigado pela ajuda.

Bom, vamos lá amiguinho.
Primeiro, você precisa entender o conceito de variável. Você sabe qual é?
Variável é um elemento capaz de receber e armazenar valores compatíveis com o tipo com o qual foi declarado (ou seja, uma variável só pode armazenar algo que caiba dentro dela). Não vou nem entrar no assunto de linguagens fortemente e fracamente tipadas.
Quando você tem algo como
java.util.List<String> listaDeNomes; você está dizendo a quem interessar possa (seja o compilador, quando da compilação ou da JVM quando da execução) que você precisa de um espaço na memória para alocar (colocar) um objeto que representa uma lista.
java.util.List é uma interface. Sendo assim, entende-se que ela seja um contrato. Para que se possa criar um objeto que caiba dentro da variável declarada como sendo um java.utl.List, você precisa aceitar e praticar o que está no contrato.
Isso não ocorre apenas com o List, mas com qualquer interface.
Para, então, instanciarmos um objeto que atenda aos critérios do contrato da interface List, temos duas opções: utilizar uma implementação padrão (java.util.ArrayList ou java.util.LinkedList) ou, então, criarmos uma implementação (que pode ser uma classe anônima ou não, mas isso é outro assunto).

Assim sendo, quando você tem Connection conn = DriverManager.getConnection(url, user, pass);, funciona de forma semelhante.
Você poderia fazer Connection conn = new Connection(); Porém, teria de implementar cada um dos métodos que existem dentro da interface java.sql.Connection (o que não é muito fácil).
Para isso, já existe a implementação que é retornada ao invocar o método estático getConnection (que é sobrecarregado) da classe DriverManager.

O objetivo do método getConnection é, em linhas gerais, abrir uma conexão jdbc com o banco de dados especificado.