Olá Guilherme!
Veja bem, o Pool de Strings (String Pool) é onde ficam armazenadas todas as Strings iniciadas de forma literal, ou seja, iniciadas através de aspas. A utilidade desse pool é a redução do uso de memória do computador quando criamos Strings.
Veja só, a duas formas de instanciar uma String. A primeira é a forma literal, utilizando aspas, a outra é através do construtor da classe String. Ex:
String s1 = "Olá Mundo!";
String s2 = new String("Olá Mundo!");
Mas qual a diferença dessas duas formas?
A diferença é onde será armazenado esse objeto String. Quando utilizamos o construtor, o objeto é armazenado no Heap como os demais objetos. No entanto, quando utilizamos a forma literal o objeto é armazenado no Pool de Strings.
Qual a vantagem do Pool de Strings?
A JVM antes de inserir uma String no Pool de Strings verifica se existe um objeto igual já inserido. No caso de já existir esse objeto, ela reaproveita o mesmo evitando o gasto de memória. Já através do construtor, não é feita a verificação e é criado o mesmo objeto duas vezes, aumentando o uso da memória.
Enfim, espero ter ajudado! Bons Estudos!