In that case, I would use rules like:
23 in Categories; ExtraShippingCharge=10
Variable=MyWeight; Value=weight-evaluate_for_categories(Weight, 23)
[... your other rules, using MyWeight instead of weight...]
Basically, what I do is to check if category 23 is in the cart. If that is the case, we charge 10€/$/£ extra. However, as you said you want to base your shipping costs on all OTHER items, you cannot use e.g. Weight for the other items, because the Weight variable includes the products from category 23, too. Instead, you define your own variable MyWeight, where you subtract the weight of all products from category 23, so the MyWeight variable contains the weight only of all OTHER category items.
If you use other quantities than the weight, you would define another custom variable similarly.
Best regards,
Reinhold