Oi Vinicius. Mil desculpas pela demora.
Que bom que funcionou. Esse foi um detalhe que deixei passar. É necessário usar a variável local criada no for, como você fez, utilizando a cont.
--
A sua classe Conta tem uma referência para um Cliente. Quando criamos uma classe temos uma especificação, por meio da qual conseguimos criar vários objetos na memória.
Cada vez que você utiliza o new, um novo objeto é criado na memória. O código abaixo, por exemplo, cria dois objetos do tipo Conta na memória:
new Conta();
new Conta();
Além de criar objetos na memória, conseguimos atribuir essa declaração pra variáveis:
Conta contaJoao = new Conta();
Conta contaAna = new Conta();
Quando você faz isso, contaJoao e contaAna apenas referenciam os objetos criados na memória com o new.

O objeto é quem irá guardar os valores de fato. Quando você não define qualquer valor, existem valores padrão. Tipos numéricos por exemplo, tem valor 0 por padrão.
Tipos de referência, como o Cliente titular que está dentro da sua Conta, tem valor null por padrão. O que indica que sua referência não aponta para um objeto na memória.
Quando você cria uma Conta:
Conta conta = new Conta();
Você tem a variável conta apontando para um objeto Conta na memória.
Nessa momento, dentro do seu objeto Conta, você consegue apontar para um Cliente. Se você criar uma nova Conta com new, existirá um novo objeto na memória que será capaz de referenciar um objeto Cliente.
Como são objetos separados, quando você define:
Cliente joao = new Cliente();
conta.titular = joao;
Você está dizendo que a variável titular dentro do objeto para onde conta se referencia, deve referenciar o mesmo objeto que a variável joao se referencia. Ficaria algo como:

Faz sentido? Abraço!