Least Number of Loops to Create Custom Homepage?

You can achieve this by checking where you are in the loop and outputting markup at the appropriate time. Within the object that holds the query results is a counter that keeps track of the current post, $wp_query->current_post. Note that it is zero-indexed, so first is 0, 2nd is 1, etc..

<?php
while( have_posts() ):
    the_post();

    if( $wp_query->current_post == 0 ):

        // this is the first post
        ?>
            <div class="one">
                <?php the_title(); ?>
            </div>
            <div class="two">
        <?php

    elseif( $wp_query->current_post > 0 && $wp_query->current_post < 4 ):

        // this is the second - fourth posts
        the_title();

    elseif( $wp_query->current_post == 3 ):

        // this is the fourth post
        ?>
            <!-- close div class=two -->
            </div>
        <?php

    endif;

endwhile;