Fala aí, Lucas! Tudo bem?
Vamos lá!
Quando você usa "new" em alguma parte do seu código você está dizendo à JVM que você precisa de um objeto baseado numa classe que tem o construtor X ou Y.
É normal usarmos o construtor default da classe para inicializarmos alguma variável, em alguns casos usamos a sobrecarga de construtores. Veja:
Suponha que você tem uma classe chamada Pessoa. Logo:
Pessoa(){ ... } // construtor default
Pessoa("Pedro", "29 anos"){ ... } // sobrecarga
Quando você cria um array e usa new após o sinal de igual. Você está dizendo pro compilador que você quer um objeto que tenha os comportamentos da classe que está do lado direito do sinal de igual.
Usuario joao = new Pessoa();
O mesmo serve para o Array do qual você poderá dizer ao compilador qual "forma" o objeto deverá assumir.
List<Pessoa> listPessoa = new ArrayList<Pessoa>();
Para melhor entendimento minha sugestão são as aulas de Polimorfismo em Java.