Custom posts in different columns style

You need to use the offset paramater in WP_Query e.g.

<?php
        $loop = new WP_Query( array( 'post_type' => 'recentproject', 'orderby' => 'rand', 'posts_per_page' => '1') );
        $counter=0;
        ?>
        <?php while ( $loop->have_posts() ) : $loop->the_post(); $counter++; ?>
        <div class="col-8 columns">
            <?php edit_post_link(); // Always handy to have Edit Post Links available ?>
            <?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
                <?php echo get_the_post_thumbnail(); ?>
            <?php endif; ?>
        </div>

        <div class="col-4 columns">
            <h4 class="project_title"><?php the_title(); ?></h2>
            <?php echo the_content(); ?>
        </div>
    <?php endwhile; ?>
    <div class="clear"></div>
    <div class="row">
        <?php
        $loop = new WP_Query( array( 'post_type' => 'recentproject', 'orderby' => 'rand', 'posts_per_page' => '3', 'offset' => '1' ) );
        ?>
        <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <div class="col-4 columns">
                <h4 class="project_title"><?php the_title(); ?></h4>
                <?php edit_post_link(); // Always handy to have Edit Post Links available ?>
                <?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
                    <?php echo get_the_post_thumbnail(); ?>
                <?php endif; ?>
                <?php echo the_content(); ?>
            </div>
        <?php endwhile; ?>
    </div>

Basically it ignores the first xx posts in the query, so you would use offset => 1 if you want to ignore the first post in your query

I don’t think it will work with “rand” order though, is the rand a necessity?
Edit: Using count & 1 query

<?php
$loop = new WP_Query( array( 'post_type' => 'recentproject', 'orderby' => 'rand', 'posts_per_page' => '4') );
$count = 1;
while ( $loop->have_posts() ) : $loop->the_post();
 if($count == '1') { ?>
  <div class="col-8 columns">
   <?php edit_post_link(); // Always handy to have Edit Post Links available ?>
   <?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
    <?php echo get_the_post_thumbnail(); ?>   
   <?php endif; ?>
  </div>

  <div class="col-4 columns">
   <h4 class="project_title"><?php the_title(); ?></h4>
    <?php echo the_content(); ?>
  </div>
 <?php } else { ?>

  <div class="col-4 columns">
   <h4 class="project_title"><?php the_title(); ?></h4>
   <?php edit_post_link(); // Always handy to have Edit Post Links available ?>
    <?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
     <?php echo get_the_post_thumbnail(); ?>
    <?php endif; ?>
    <?php echo the_content(); ?>
   </div>

  <?php
  }
 $count++;
endwhile;
wp_reset_postdata();
?>

Not tested but should work, basically it counts the posts and changes the HTML code depending on the count number