Usar chaves para agrupar comandos (sem criar um subshell) funcionará:
command1 && { command2 && echo OK || echo FAIL2 } || echo FAIL1
Se command1 falhar, command2 não será exibido, você receberá apenas FAIL1 .
Eu também acho que essa construção não é muito legível. Eu acho que usar && funciona bem para casos simples, mas para condicionais mais complicados, eu prefiro usar if declarações.