There is a custom post type I am making called announcements. When I set it to a future publishing time, say at 8:00. It will say at 8:01 'Missed Schedule'. However after a little while I will refresh and it publishes. Is this expected behaviour?
In short, yes. When wp-cron is not triggered frequently enough it will miss scheduled publish times. The behavior you mentioned above is normal. A visit to your site will automatically trigger wp-cron in the background and any "Missed Schedule" posts will be published promptly.
To get more consistent behavior from wp-cron I'd recommend setting up a CRON JOB on your web server to run wp-cron on a regularly scheduled interval (every 30 minutes, every hour, etc.) By doing this you are instructing wp-cron to maintain your scheduled tasks without relying on web traffic to trigger wp-cron for you.