How to Highlight unread WordPress posts?

You can use update_user_meta() and get_user_meta(), where you can store and retrieve a value related to a key and a user, like 'read_post_' . $post_id for example.

Inside The Loop, when you’re going to print the article, you can add a condition: if the user has the user meta value 'read_post_' . $post_id as false or not set, you could print that blue circle.

if(get_user_meta($user_id, 'read_post_' . $post_id, true) != ""){
 // show the notification
}

And when you print the inside of the article you can update that value, so it will be set as true:

update_user_meta( $user_id, 'read_post_' . $post_id, true );