The function checks your version of WP for possible updates. It appears that there is a transient in the database named 'update_core', so it's stored in the $wpdb->options table as '_site_transient_update_core'. The value of that transient is a serialized object that has information, I'm not an expert on wp_version_check, but it uses that transient to keep track of when to next check for a new version. It checks for things like your Wordpress version, php version, mysql version, language, if your MU and if so how many blogs you have, user base and it sends that information to api.wordpress.org. I'm guessing that Wordpress Core Developers use that information to decide on what is important to the community as well ( so to answer your question it seems to do a few things ) WP Updates are important and most people wouldn't check for updates by themselves. It looks like it does all this on the admin side, so it won't lag your front end page loads and it also won't check immediately after a failed check, to prevent hanging your website up if the api.wordpress.org server doesn't respond.
In the future, I know that WP plans on making all updates 'Automagically' so that users with little computer knowledge won't be at a disadvantage because they opted not to go with a WP update. I'm sure that someone else may have more knowledge on the subject. I thought the question was interesting so I opened up my IDE and peeked around a bit.
Thx to previous comments and this answer, I think figured out what's going on.
wp-includes/update.php sets the action with
- if/when cron fires,
wp-includes/cron.php will run
wp_cron() which in turn will run
spawn_cron() defined in same file.
spawn_cron() does an AJAX call to
/wp-cron.php which will call
do_action_ref_array() with the
wp_version_check event and ultimately fire the