Pensavo a qualcosa del genere.

codice:
<?
set_time_limit (0); 
if (! isset($_GET['conta'])) {
 $conta = 0;
} else {
 $conta = $_GET['conta'];
}
$query = "select * from tabella limit $conta, 100";
$row   = mysql_query($query);
if (mysql_num_rows($row) > 0) {
 while ($row=@mysql_fetch_array ($query)) { 
  $dest="$row[mail]"; 
  mail ($dest, $ogg, $corpo, $headers); 
  echo "$row[mail]
"; 
 }
 $conta = $conta + 100;
 header("location:invio_mail.php?conta=$conta");
}
?>
D'altronde puoi mettere diversi indirizzi mail separati da una virgola nel parametro $dest. Ma in questo caso penso che tutti vedranno tutti gli indirizzi.