There is more than one approach to setting up an "audit trail" for tracking changes to a record.
One method is to duplicate the record each time the record is opened for editing. By comparing the duplicate with the current copy, you can see what data was changed.
Another method set's onObjectEnter triggers on each field to capture the original value of the field at the time the field was entered. If the OnObjectSave trigger is tripped, another script then logs the original value of the field into a field of a related record.
I have also heard of custom functions that can be used to log edits, but am unfamiliar with the details of that approach.