Hello John,
You pointed me in the right direction – turns out it also cannot be called after has_rows(), so the solution looks like this:
$rows = get_field('carousel');
$row_count = count($rows);
if( have_rows('carousel') ){
<!-- do some count based stuff here -->
while( have_rows('carousel') ): the_row();
<!-- do some other stuff here -->
endwhile;
}