Use WP_Query with offset like this
<?php
$offset = 6;
$post_args = array(
'post_type' => 'post',
'posts_per_page' => $offset,
);
$slider_blog_posts = new WP_Query( $post_args );
?>
<?php if ( $slider_blog_posts->have_posts() ): ?>
<div class="carousel">
<?php while( $slider_blog_posts->have_posts() ): $slider_blog_posts->the_post(); ?>
<?php get_carousel_slide( get_the_ID, true); ?>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
and then create a new query for the rest of the posts:
<?php
$new_args = array(
'post_type' => 'post',
'posts_per_page' => 8,
'offset' => $offset
);
$grid_blog_posts = new WP_Query( $new_args );
?>
<?php if ( $grid_blog_posts->have_posts() ): ?>
<div class="grid">
<?php while( $grid_blog_posts->have_posts() ): $grid_blog_posts->the_post(); ?>
<?php get_front_eighth( get_the_id() ); ?>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
as for the functions use them to return data not to display HTML. Displaying HTML should be done in fragments.