Beyond simple if-then-else
Track 4 introduced (?(N)yes|no). Advanced flavors extend this with named-group conditions and even lookaround conditions.
Lookaround condition
PCRE supports (?(?=lookahead)yes|no): "if the lookahead succeeds, match yes; otherwise match no." This lets you branch on "is the next thing X?" without consuming.
Named conditions
(?(name)yes|no) — branch based on whether named group matched. Same idea as numbered, but stable across edits.
The recursion-condition combo
The most powerful (and most cursed) use: combining recursion with conditionals. "If we're at depth N, do this; otherwise recurse." This is full Turing-tarpit territory.
When you actually need them
Almost never in production code. Most conditional logic reads better as alternation, post-processing, or — when truly complex — as a real parser.
The one legitimate use I've seen: validating a format that has "if X is present, Y must also be present" rules. Conditionals can express this in one regex; alternation requires duplication.