Messages are automatically marked as read when any user clicks on that conversation and scrolls to the most recent unread message. Conversations with unread messages are denoted by an orange highlight with an orange dot next to the contact's name.
Messages are marked as read on a conversation basis, not on a user basis - once a user clicks on a conversation and it's marked as read, the conversation will appear as read for all other users with access to that contact.
We can see from the orange dot that there is an unread message for Jimmy Woodward, and we've clicked into that conversation. We'll scroll down to the newest message (the Scroll for more notification on the conversation lets us know to scroll for new messages).
The orange dot has disappeared from the conversation in the list view, indicating that this conversation has now been read.