Display first post on each page differently than the others

Difficult to say how to implement it exactly without looking at your code. But the idea is to use the $wp_query->current_post variable that is always available in the main query. It would look something like this:

<?php
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        global $wp_query;
        if ( $wp_query->current_post === 0 ) {
            // Output the first post
            continue;
        }
        // Output post
    }
}