As far as I know about transactions, that's what they are for: to ensure serializability of events, i.e. that if two transactions from different connections try to update the same resource at the same time, the result will be as if they arrived separately, the second coming in after the first has finished executing. The way the DBMS deals with this may differ: it may issue a lock on the whole table, or it may try to let both transactions proceed until there's a conflict and then rollback one of them, and so on.
The DBMS may also give you the option of selecting concurrency level. I know Sybase has such an option, and in MS SQL Server you can do this through
SET TRANSACTION ISOLATION LEVEL
Again, I am not sure how much control over this there is in mySQL.
Yaron