Se a transação falhar por qualquer motivo, o código para na mesma linha em que ocorreu o erro end então a execução salta diretamente para o bloco catch. Portanto, é suficiente a maneira como você escreveu no Bloco de Código 2.
Observe que você deve sempre relançar a exceção após a reversão. Caso contrário, você nunca terá uma idéia do que era um problema. Então deve ser
try{
$stmt = $db->prepare(... 1 ...);
$stmt->execute();
$stmt = $db->prepare(... 2 ...);
$stmt->execute();
$stmt = $db->prepare(... 3 ...);
$stmt->execute();
$db->commit();
return true;
}catch(Exception $e){
$db->rollBack();
throw $e;
}