Lqa propiedad HasValue cuando es true indica que el checkbox tiene esta selecciona o no, es decir tiene valor, pero si esta a falso quiere decir que todavia no tiene valor es un checkbox con tres estados y si no pones en el if esa condición y solo tienes la segunda comprobación te daria un error ya que estaria a nulo.
El poner un checkbox con tres estado se hace poniendo a la propiedad ThreeState del checkbox a true y si no se inicializa el valor del checkbox por defecto es nulo
Aqui tiene sun enlace
http://msdn.microsoft.com/es-es/library/system.windows.forms.checkbox.threestate.aspx
Oscar Avarez Guerras - Arquitecto Software en I3B (I+D+I)
Blog:http://geeks.ms/blogs/oalvarez
Por favor marca como respuesta si te ha ayudado esta respuesta