Io farei così:
Dando per scontato che hai un sistema per impedire un overbooking al momento della prenotazione.
1 ti prendi le prenotazioni per il mese corrente.
2 Metti in un array la coppia giorno => numero di prenotazioni. Visto che hai due sole stanze varrà al max 2.
3 Se il giorno (del calendario) è presente nell array ed il valore è 2, lo metti in rosso.

Tra l'altro nel tuo codice rifai la (stessa) query nel clico for...ed non ha senso.
Quindi:
Codice PHP:
function prenotazione($mese){
    
$giorni = array();
    
$db = new MySQL(); 
    if (! 
$db->Query("SELECT str_data, dataFine FROM bebcalendario WHERE MONTH(str_data) = $mese OR MONTH(dataFine) = $mese")) 
           echo 
$db->Kill();   
    while(
$row $db->Row() ){
          
// Sono timestamp
          
$str_data $row->str_data;  
          
$dataFine $row->dataFine;
          while(
$str_data <= $dataFine){
                if(
date('m'$str_data) == $mese){
                        if(!isset(
$giorni[$str_data]))
                              
$giorni[$str_data] = 0;
                        
$giorni[$str_data] ++;
                }  
                
$str_data += (60 60 24);
          }
    }
    return 
$giorni;


A questo punto nella funzione dove crei il calendario basta che vedi se il giorno è presente su $giorni ed è = 2
Codice PHP:
function showCalendar($m$y){
   
$compare prenotazione($m);
    ...
    ...
    
$color '#fff';
    if(isset(
$compare[$data]) && $compare[$data] == 2)
         
$color '#be1e2d';
    
$label = ($data != $oggi)  ? $day '<b>'.$day.'</b>';
    echo  
"<td style='color:$color'>".$label."</td>";  
   ...

Ps: In questo caso non ho cosiderato l'anno. Inoltre la query non ti prende le prenotazioni che durano più di un mese