Using WP Query, I want to include all posts in category 1 as long as they are not also in category 2

I think, you can try this type of code.

$args = array(
    'post_type'      => 'product',
    'meta_key'       => 'sorting_weight',
    'orderby'        => 'meta_value_num',
    'posts_per_page' => - 1,
    'order'          => 'DESC',
    'tax_query'      => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'term_id',
            'terms'    => 81, // category 1
        ),
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'term_id',
            'operator' => 'NOT IN',
            'terms'    => 82, // category 2
        )
    )
);