Cita: ¿Cual de las formas es mejor?
Si utilizo la segunda forma, ¿que ocurre al instanciar varias veces la clase conexion.java, se crean varios pool?
Pues dependiendo de cómo lo hagas, sí, podrías crear varios pool de conexiones.
Con respecto a tu otra duda, pues cada una tiene sus ventajas e inconvenientes, aunque la tendencia es hacerlo en el servidor.
Si lo haces en el servidor, liberas a tu código de esa tarea, puedes cambiar de base de datos o propiedades del pool sin tener que desplegar o compilar tu proyecto de nuevo y un mismo pool se comparte fácilmente entre varias aplicaciones.
Como única ventaja de hacerlo en la aplicación ahora sólo se me ocurre que no necesitas acceso al servidor.