Es razonamiento simple. Si tienes dos grupos de condiciones, cada condición es una operación logica separada y necesitas hacer una conjunción de ambas.
Por favor, lee un poco de lógica proposicional básica.
La función DATE() se usa para que no haya problema con campos declarados como TIMESTAMP o DATETIME, ya que las horas almacenadas afctan la comparación.