Fala Luciano, tudo bem amigo?
Criar uma conexão com um banco de dados é um processo custoso. Para evitar a necessidade de ter que criar uma nova conexão com o banco de dados toda hora e sabendo que isso vai precisar ocorrer é utilizado o pool de conexões, que nada mais é que um conjunto de objetos de conexão reutilizáveis que são previamente criados. Quando uma nova conexão é necessária, uma conexão existente é recuperada do pool. Quando o processo usando a conexão for concluído, ela será colocada novamente no pool para ser usada por outro processo. Esse padrão reduz a sobrecarga de conexão a um banco de dados, diminuindo o tráfego de rede, limitando o custo de criação de novas conexões e reduzindo a carga no coletor de lixo.
Espero ter ajudado
Abraço e bons estudos! =)