OR heißt doch oder, AND und? Richtig?
Sowohl mit AND als auch mit OR verknüpfst du in deinem Beispiel zwei Bedingungen.
Bei AND müssen beide zutreffen, damit die Gesamtheit TRUE ist:
if ($ab_datum != "" AND $ab_datum != "0000-00-00")
Beim Wert "0000-00-00" in der DB ist die zweite Bedingung FALSE, "0000-00-00" ist nicht ungleich "0000-00-00", sondern gleich.
if ($ab_datum != "" AND $ab_datum == "0000-00-00")
wäre TRUE