I would avoid the use of query_posts — it forces another database hit. There are plenty of other ways to hook in and change the query before posts are fetches. pre_get_posts
is one of them.
To display multiple post types on the home page (pages and posts in this example):
<?php
add_action('pre_get_posts', 'wpse70606_pre_posts');
/**
* Change that query! No need to return anything $q is an object passed by
* reference {@link http://php.net/manual/en/language.oop5.references.php}.
*
* @param WP_Query $q The query object.
* @return void
*/
function wpse70606_pre_posts($q)
{
// bail if it's the admin, not the main query or isn't the (posts) page.
if(is_admin() || !$q->is_main_query() || !is_home())
return;
// whatever type(s) you want.
$q->set('post_type', array('post', 'page'));
}
This would go in your themes’s functions.php
file or in a plugin.