boolean a = false, b = true;
if ( a && b ) { ... };
In most languages, b will not get evaluated because a is fals
Regarding whether or not short-circuiting is efficient, pipelining is unlikely to have much of an impact on performance. In situations where it could have an impact, there's nothing to stop the compiler from testing multiple conditions in parallel so long as these tests doesn't have side-effects. Plus, modern CPUs have several mechanisms useful for improving the pipeline performance of branchy code.
Nested ifs will have the same effect as short-circuiting &&.
'Short-circuit evaluation' is the most common name for it, and your friend is wrong about it being uncommon; it's very common.