Guarda, ho provato questa query su phpmyadmin è funziona (mettendo un record 11:00 - 11:50):

SELECT ... WHERE ('11:30:00' BETWEEN dalle AND alle) OR ('12:20:00' BETWEEN dalle AND alle) OR ('11:30:00' < dalle AND '12:20:00' > alle)

Sei sicuro che i valori $orario_i/f siano corretti ?

PS: l'ultima condizione l'hai sbagliata : ('". $orario_i ."' < dalle_ore AND '". $orario_f ."' > alle_ore)";