I want a record to become VIEW ONLY when it hits a certain status (Loan Status/Lead Status) - What is the best way to do this?
You can set "Lockable" attribute to your object. Once the record is locked (through UI or trigger), it cannot be modified or deleted. Lock can only be removed through trigger or API. Please see Chapter 8 for more info.
Is lockable attribute roll based? Example - once a record hits a certain status we want certain user groups to be unable to edit.
No, locked records are locked for everyone.
In you case I'd recommend do not allow editing at all, but allow workflow actions instead. You can put any fields on Status Change page and have many these pages. This will give a flexibility you need.