El problema creo que está en que en la segunda consulta pones un mysql_fetch_assoc de más antes del bucle while:
Código PHP:
$query_noticias3 = "SELECT id, titulo, resena, texto, foto FROM `noticias` WHERE 1 AND `canal` =$idcanal ORDER BY `id` DESC LIMIT 0 , 2";
$noticias3 = mysql_query($query_noticias3, $sistema) or die(mysql_error());
// creo que la línea de abajo está de más y al volver a llamar a la misma instruccion en el while pierdes una fila
// $row_noticias3 = mysql_fetch_assoc($noticias3);
while ($row_noticias3 = mysql_fetch_assoc($noticias3)) {
$notiid = $row_noticias3['id'];
$notititulo = $row_noticias3['titulo'];
$notiresena = $row_noticias3['resena'];
$notitexto = $row_noticias3['texto'];
$notifoto = $row_noticias3[ 'foto'];
En la primera consulta(la que anida la segunda) no tienes ese problema porque ejecutas el bucle con condición final de forma que la lectura previa que haces con mysql_fetch_assoc no se pierde hasta el final.
Creo que es eso...
Salu2 ;)