Dzieje się tak, ponieważ mysql_query czasami zwraca wartość logiczną false (błąd zapytania). Musisz to sprawdzić:
$amn = mysql_query("SELECT * FROM `Messages` WHERE to_user='$usr' AND read='0'");
if($amn === false) {
var_dump(mysql_error());
}
else {
print_r(mysql_num_rows($amn));
}
Powyższy kod jest napisany w złym stylu i przestarzały. Używaj PDO z wyjątkami w rzeczywistych projektach.