How to reduce three query to one in multiple output template?

query for all posts at once and set a counter variable to check where you are in the loop.

$products = get_posts(
    array( 
        'numberposts' => 7,
        'post_type' => array('product')
    )
);
$count = 1;
foreach( $products as $product ):
    if( $count == 1 ):
        // first post
    elseif( $count > 1 && $count < 5 ):
        // two - four
    else:
        // four +
    endif;
    $count++;
endforeach;

EDIT- using your markup:

$products = get_posts(
    array( 
        'numberposts' => 7,
        'post_type' => array('product')
    )
);

?>
<div class="class news">
<ul class="280">
<?php
$count = 1;
foreach( $products as $product ):
    if( $count == 2 ):
        ?>
        </ul>
        </div>

        <div class="class editorial">
        <ul class="650">
        <?php
    elseif( $count == 5 ):
        ?>
        </ul>
        </div>

        <div class="class images">
        <ul class="980">
        <?php
    endif;

    echo '<li>post</li>';
    $count++;
endforeach;
?>
</ul>
</div>