Correct on both counts (though the == operator does not exist in MySQL -- I'm assuming you just used it for clarity).
The rows affected will count only rows that were changed. So if none of the fields are changed, then nothing is affected. Note that this comparison for changed is case sensitive, unlike those actually used in queries.
Edit: http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html
For UPDATE statements, the affected-rows value by default is the number of rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to mysql_real_connect() when connecting to mysqld, the affected-rows value is the number of rows “found”; that is, matched by the WHERE clause.
I'm looking for a link as to how MySQL decides what consitutes 'actually changed' or not. Based on the wording, it's obvious to assume that they mean it will count as actually changed if an only if the before and after values are not equal on a binary level.
Without diving into source, I probably cannot prove that though.