O pool de conexões é um recurso que conecta automaticamente no banco de dados e deixa aberta X conexões. Então quando você precisa de uma conexão você pede ao pool, então ele te retorna uma. Você usa a vontade, e depois que não precisar mais dela, devolve ao pool.
Há um custo grande entre você conectar e desconectar do banco. Imagina o tempo para fazer lookup, conectar no host, autenticar, selecionar a base, buscar os metadados. Dessa forma o pool fica sempre conectado e gerenciando a você as conexões. Pode parecer que um milésimo de segundo que leva para conectar não pareça muito, mas no final de uma operação grande e muitos usuários você sente a diferença.
Eu diria que é fundamental você usar um connection pooling. Nele você configura uma série de coisas como tempo de espera, validações de conexão, quantidade máx e min de conexões, e afins. E também você tira a responsabilidade da sua aplicação de conectar, desconectar e saber as credenciais de acesso.
Quanto aos códigos, deixo para você pesquisar pela internet, pois existe muito material bom sobre isso.
Abraços