query_posts result differs from wp_query request result

You are improperly using query_posts. Don’t use query_posts, ever.

If you want to iterate over an array of posts, use get_posts and assign the results to a var that isn’t a reserved global.

$my_posts = get_posts( array(
    'posts_per_page' => 5,
    'paged' => 1,
    'post_status' => 'publish'
    'orderby' => 'date',
    'order' => 'desc'
) );

foreach( $my_posts as $p ){
    echo($p->ID."<br>");
}