Saludos Gladys,
A mi entender, lo que primero hacemos es definir la variable "existe" con el valor "false" para que desde un principio empiece con ese valor como el valor por defecto, o el que nosotros hemos interpretado como el flujo natural de ese ejemplo o ejercicio, pues mas adelante mientras el codigo va corriendo de arriba para abajo en nuestro FOR creamos nuestras condiciones, y dentro del FOR viene la parte del primer IF que tiene como condicion lo que se debe de cumplir para que ese valor por defecto que hemos establecido en la variable "existe" se vuelva "true" con el objetivo de que si la variable "existe" mantiene el valor "true" no se vaya a imprimir los nombres de los ingredientes en nuestro arreglo "ingredientes" y asi nos salga la alerta de que el ingrediente esta repetido y el codigo empieza un ciclo infinito hasta que ingresemos un ingrediente con nombre diferente, una vez pongamos el ingrediente con nombre diferente nuestra variable "existe" cambiaria o volveria a su valor "false" para que el codigo corra normalmente de forma descendente, por eso es que en el segundo IF, hemos puesto la condicion de que si "existe" tiene el valor "false" pues como vendria siendo el flujo natural de las cosas, el codigo continuaria de forma normal e imprimiria el ingrediente en nuestro arreglo, y a su vez le sumaria 1 valor a nuestra variable contador que desde un inicio empieza en 1.
Espero que te haya sido de ayuda.