Would the second case be where a lock was placed on the record being read/changed BEFORE it is read?
Yes, you have to lock, and read again, then update.
That's one of the reasons "Sally" had the record locked through lunch. A lot of systems, if you were looking at a record on the screen, it was no big deal.
But if you entered "Change mode", the system would lock the record the entire time the person was staring at the screen (or at lunch) because the intent was that a change was coming, and if someone (or something) else came in a made a change, it would quite likely be stomped on.
Consider this simple scenario, the Customer record has a field "total sales" (It's a contrived example, so...).
Sally opens up and starts changing the customers address for some reason. Meanwhile, Paul is running a posting process for new orders. Sally has the record with a sales number of $100, Pauls process reads that, add $10 to it, and stores it back. This was done in the blink of an eye. Meanwhile, Sally, updates the address, checks it against her form, says "This is good...Oh Hi Betty! How's Sam?...oh...1 sec", and saves the record -- with the $100 sales amount.
Now, if the program locks the record, Pauls process just sits there, trying to do the update, but can't because of the locked record. Sally finally updates, and Pauls process finishes, and everything is ok. Paul is just annoyed "Why is this taking so long". (Sally's not a bad person, computers are just awful, demanding monsters.)
Back in the day, it was not uncommon for the entire record to be loaded into the program, changed one part of it, and written back wholesale. Nowadays, things like SQL let systems be more selective (for example, the program Sally was using would simply not update the sales number field). And, of course, folks tend to separate things out more, data is more granular.
This type of hard locking is called "pessimistic" locking. Many systems for interactive use use a technique called "optimistic" locking -- which really isn't a lock at all. Rather, when they try to perform an update, they may qualify it with what their update does.
For example, in SQL, someone might want to change the address line from 100 Main Street to 101 Main Street.
They can try something like this: "UPDATE Customer SET Address='101 Main Street' WHERE Address = '100 Main Street'"
This will, obviously, lock the records for a microsecond to perform the update. But if someone else snuck in and made a change behind the back of this person, the update would simply fail. Then it's a matter of how the UI deals with that. (Nothing like filling out a bunch of changes and have the machine come back "So sorry, something changed" and "refresh" all of your fields on your screen. "Thanks a lot!")
There's all sorts of ways to manage that. But it just demonstrates the complexities of the problem, and how, over time, things have changed to manage it.