In addition to Phill's points...
A common pattern:
SELECT ... FOR UPDATE;
use the values from that SELECT
UPDATE ... the row(s) that were SELECTed for UPDATE. (Or skip if you decide)
This does (roughly) one of these:
The entire transaction runs without any fuss.
Another connection touches the row(s) at the 'same' time, but is temporarily ...
Transactions are the way to go.
... I found out that while a row is being processed by a transaction, other transactions can still come along and modify that row ...
Cite your source because, frankly, it's just plain wrong.
The whole point of Transactions is that they give you exactly the kind of "atomicity" of change that you're looking for.