De nada, un placer
Es importante saber que en Java (y otros lenguajes) los
métodos (ya sean constructores, funciones, procedimientos..) no solo se distinguen por el nombre que les damos, si no también por el tipo, orden y cantidad de parámetros que le indicamos que tiene que recibir.
De hecho, en una clase podemos tener definidos métodos con el mismo nombre y al lenguaje no le importará que los nombres se repitan, siempre y cuando varíen el tipo, orden y/o la cantidad de parámetros que recibirán.
Así, podríamos tener declarados:
miMetodo(int n){...};
miMetodo(double n){...};
miMetodo(float n){...};
miMetodo(String s){...};
miMetodo(boolean b){...};
miMetodo(int n, int m){...};
miMetodo(int n, int m, boolean b){...};
etc...Podríamos repetir el nombre "miMetodo" tantas veces como quisieramos, que Java ejecutará un código u otro según los parámetros que le pasemos cuando hagamos la llamada al método.
No es recomendable hacer esto porque obviamente se presta a confusiones.
Sin embargo, en determinados casos puede tener sentido hacerlo y de hecho en la misma API de Java podemos encontrar multitud de métodos con el mismo nombre pero que reciben distinto número de parámetros. Eso sí, son métodos que hacen prácticamente lo mismo, por eso tiene sentido que se llamen igual.
En el caso concreto de los constructores (que son métodos en realidad), es totalmente normal crear varios con el mismo nombre pero recibiendo más o menos parámetros.
Lo normal, como tú mismo has hecho ya en tu código, es tener como mínimo el constructor básico que no recibe parámetros, y otro que recibe tantos parámetros como atributos tenga la clase (al menos los atributos que dependan de la información que proporciona el usuario).
Pero podría tener más. Supongamos una clase con 6 atributos por ejemplo, pues podrías tener constructores que solo recibe un parámetro, que recibe dos, que recibe tres, que recibe cuatro....y los otros atributos que no se reciben los inicializas tú en el código.
Como digo, esto se podría hacer y a Java le parecerá válido y correcto. Otra cosa es que a ti como programador te interese o no "complicar" tu código con tantos constructores. Sobre todo si luego vas a compartir tu clase con otros programadores, por muy bien que la documentes y expliques cada método y constructor, para el que no creó ese código le resultará confuso encontrarse con tantos constructores.
Siempre habrá casos concretos que pueda interesar tener algún constructor más de los dos habituales (con y sin parámetros), pero por lo general lo ideal es tener solo esos dos.
Antes preguntabas, si había algún problema en no poner el "constructor 1", el "básico" que no recibe parámetros.
No pasa nada si no lo pones, Java ya crea un constructor por "defecto" para este caso.
Pero es buena costumbre de programador crearlo tú, y además así te aseguras de que los atributos se inicializan a unos valores conocidos por ti, por ejemplo los típicos de
"0" para los numéricos, cadena vacía
"" para los String y espacio en blanco
' ' para los tipo char.
Esto te puede evitar luego sorpresas raras.