No, con una consulta común y corriente basta. Recuerda que
mysql_fetch_assoc() genera un array asociativo con el resultado de la consulta a la BD, y con cada llamada a esta función el puntero interno de este array avanza una posición, hasta llegar al final. Es por eso que al usar el while() lo que se hace en realidad es ejecutar en cada ciclo la funcion mysql_fetch_assoc() [o mysql_fetch_array()], devolviendo en cada loop los resultados de cada registro.
Con esta base se puede deducir que si se ejecuta primero esta función fuera del while() obtendremos el primer registro por separado:
Código PHP:
$sql = mysql_query("select * from noticias order by fecha_publicacion desc");
$datos = mysql_fetch_assoc($sql);
echo '<b>Última noticia:</b> <br>';
echo "$datos[noticia] <br><br>";
echo "<b>Otras noticias</b> <br>";
while($datos = mysql_fetch_assoc($sql)) {
echo "- $datos[noticia] <br>";
}
Un saludo,