When the read-only option is enabled the field will be visible but the data collector or user editing/creating the records will not be able to enter anything into that field.
This can be helpful if you wish to seed your apps with record data and allow the users to see the data but not make any changes to it.
Read-Only is available on all field type, except for the following: Sections, Repeatable Sections, Label, Signature, Hyperlink, and Calculation fields.
While not typically done, if you make a field read-only and required, the read-only logic will override the required logic and allow the user to fully save the record since the user has no way of entering data into these fields.
Data events can also be used to populate values into these fields that are set to read-only programmatically.