Closure é uma recurso presente nas linguagens do paradigma funcional. Uma linguagem que tem uma base muito forte nesse paradigma (e é a linguagem mais utiliza atualmente), é a Javascript.

Para explicar de uma forma bem rápida e prática o que é closure, veja a (minha) definição:

Closure é permitir que o escopo de uma função mais interna, acesse o escopo de uma função mais externa.

Para entender, veja o exemplo mais clássico de closures:

function somador(numero) {
	// escopo mais externo.

	return function(paraSomar){
		// escopo mais interno.
		return numero + paraSomar;
	};
}

var soma5 = somador(5);
console.log(soma5(3));

// output
// > 8

Por causa do closure podemos acessar a variável numero , que pertence a função somador (a função mais externa), dentro da função mais interna.