If the symbol Name is defined then the {$IFNDEF name} will skip the compilation of the text that follows it to the first {$ELSE} or {$ENDIF} directive. If it is not defined, then compilation continues as if the directive wasn’t there.
Similar to $IFDEF, the $IFNDEF directive will only check the first word of what follows, all the rest is ignored. This means that code after a
{$IFNDEF RED}
and
{$IFNDEF RED check that red is defined}
and
{$IFNDEF RED or Blue}
will only be parsed if RED is undefined. The other words are ignored. In particular, the existence of BLUE will not be checked for the last case. If you need to check multiple values, you should use the {$IF} construct instead.