Sim e não :-)
Em ambos os casos, o acesso é serializado (supondo que você esteja usando um mecanismo transacional como o InnoDB), pois eles atingem a mesma linha, para que não interfiram um no outro. Em outras palavras, as declarações são atômico.
No entanto, a contagem de linhas afetadas realmente depende do seu conjunto de configurações quando você abre a conexão. A página para mysql_affected_rows() tem isso a dizer (meu negrito):
E da página mysql_real_connect :
Então, em termos do que acontece com
CLIENT_FOUND_ROWS
sendo configurado, as linhas afetadas para:UPDATE T1 SET C1 = 'dirty' WHERE id = 1
não tem nada para ver se os dados são alterados, apenas quais linhas corresponderam. Isso seria 1 para ambas as consultas.
Por outro lado, se
CLIENT_FOUND_ROWS
foi não definido, a segunda consulta não estaria realmente alterando a linha (já que já está preenchida com 'sujo') e teria uma contagem de linhas igual a zero. Se você quisesse o mesmo comportamento independentemente dessa configuração (mostrando apenas as alterações), você pode usar algo como:
UPDATE T1 SET C1 = 'dirty' WHERE id = 1 AND C1 <> 'dirty'