read_post meta capability for anonymous users

You are not missing anything. With WordPress, you don’t have control on visitors (anonymous user). The only control you have with is_user_logged_in() to check user logged in or not. You can prevent posts from visitors.

Also, you can create a cookie or local storage based function (for control how many posts they visit) and integrate this function with is_user_logged_in().