What's saved is that your code just calls that function, rather than open-coding that check.
Suppose you wrote this code in more than two or three places:
(if (and (consp x) (consp (cdr x))
(car (cdr x)))
you might define a function for that. Since there is
cadr, you don't have to.
Also, that function may be more efficient, especially if our compiler doesn't have good CSE. Even if x is just a local variable, there is the issue that (cdr x) is called twice. A clever compiler will recognize that the value of x has not changed, and generate only one access to the cdr.
The function can be coded to do that even in the absence of such a compiler.
(That is realistic; in the early lifecycle of a language, the quality of library functions can easily outpace the quality of compiler code generation, because the library writers use efficient coding tricks, and perhaps even drop into a lower level language where beneficial.)
If x itself is a complex expression:
(if (and (consp (complex-expr y)) (consp (cdr (complex-expr y)))
(car (cdr (complex-expr y))))
we will likely code that as:
(let ((x (complex-expr y)))
...)
The function call gives us all that for free: (cadr (complex-expr y)). The argument expression is evaluated once, and bound to the formal parameter that the function refers to, and the function body can do manual CSE not to access the
cdr twice.