Does subqueries "short-circuit" based on other conditions?
Yes, they do.

select
  case 
    when (1 = 0 and (select 1/0 from dual) = 1) 
    then 1 
    else 0
  end as c 
from dual;

         C
----------
         0


Here 1 = 0 is false, so the second argument of the AND is not executed, luckily for us, because it would be a division by zero. With 1 = 1 the second part is executed and we receive the expected error:

select
  case 
    when (1 = 1 and (select 1/0 from dual) = 1) 
    then 1 
    else 0
  end as c 
from dual;

ERROR at line 3:
ORA-01476: divisor is equal to zero