2 loops, is_home won’t work, count is off

The first query should be reset with wp_reset_postdata() after its loop has finished to avoid conflicts with the main query. Glancing over your code, that’s the most important flaw I see.

Also, I’d use $my_query_2 = new WP_Query( $more_args ); for the second one – I don’t see why it’d be better to revert back to using query_posts(). This might be worth a read.

While were at it: It shouldn’t affect the functionality of your code at all, but why in the world are there so many php opening and closing tags (i.e. <?php and ?>) ? That might make sense if you have HTML markup in between and dislike echoing, but given that that’s not the case, just put <?php at the top of the document (or the relevant section) and ?> at the bottom. It will make for more legible code both for you yourself as well as people helping you.

EDIT: Mkay. This works as expected on my dev install:

<ul>            
<?php
    $per_page = is_paged() ? 10 : 9;
    $stickies = get_option( 'sticky_posts' );
    $offset = empty( $stickies ) ? 1 : 0;
    if( is_home() && !is_paged() ) {
        $per_page = 9;
        $args_first_query = array(
            'posts_per_page' => 1,
            'post__in' => $stickies,
            'ignore_sticky_posts' => 1
        );
        $first_query = new WP_Query( $args_first_query );
        if( $first_query->have_posts() ) {
            while ($first_query->have_posts()) : $first_query->the_post();
                // replace with your template part:
                echo '<li>Latest Sticky:'.get_the_title().'</li>';
            endwhile;
        }
        wp_reset_postdata();
    }
    // your sidebar
    $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
    $args_main_query = array(
        'posts_per_page' => $per_page,
        'post__not_in' => $stickies,
        'paged' => $paged,
        'offset' => $offset
    );
    query_posts( $args_main_query );
    if( have_posts() ) {
        while ( have_posts()) : the_post();
            $format = get_post_format();
            if ( false === $format )
                $format="standard";
            echo '<li>'.get_the_title().'</li>';
        endwhile;
    }
    // pagination, with check for WP-PageNavi plugin
    if ( function_exists('wp_pagenavi') ) {
        wp_pagenavi();
    } elseif ( get_next_posts_link() || get_previous_posts_link() ) {
        next_posts_link( '&laquo; Older Entries' );
        previous_posts_link( 'Newer Entries &raquo;' );
    }
    wp_reset_query();
?>
</ul>

I’d suggest you check whether the above works on your site as well. If it does, drop your custom stuff in one by one, see whether it fails and if so, when.

This check if( $post->ID == $do_not_duplicate ) continue; is definitely superfluous, given that the first query only takes stickies and the second one doesn’t at all. So you can for sure omit that line and the related one in the 1st query.