Hi,
Normally, what is done is that you create a specific manual shjpping method with a lower price (or even no price) for that so that during the checkout, the customer can choose between that shipping method (which would be called "pick up at the store" or something like that) and your other shipping methods which would be more expensive to cover the costs of shipping.
If you want different shipping fees for different products, I would recommend to turn on the "use shipping price per product" setting of your shipping methods. Then, in each of your product, you'll be able to define the shipping fee for each product for each shipping method.
That way, you can let the customer choose if he wants pick up or not and then the shipping price is calculated based on all the shipping prices of that shipping method in your products.