Hi there,
To set this up, you will first need to set up Shipping Zones:
https://docs.woocommerce.com/document/setting-up-shipping-zones/
Shipping Zones are essentially geographic areas (cities, towns, countries, etc). When the customer enters their shipping address at Checkout, WooCommerce will start at the top of the list of shipping zones and go down the list until it has a match between the address and a zone. Once it matches, it will return the shipping methods in that zone and stop.
Once you have set up your shipping zones, you can add your shipping methods that you want to have available in each zone.
For the “shipping with extra charge”, you can use the built-in Flat Rate method:
https://docs.woocommerce.com/document/flat-rate-shipping/
For the “self pick up for free”, you can use the Local Pickup method and set the price to $0:
https://docs.woocommerce.com/document/local-pickup/
If you get stuck, please send screenshots of your shipping zones and methods. I recommend https://snipboard.io for easily sharing screenshots – please follow the instructions on the page, then paste the URL in your reply here.
Also, please send the shipping address you are using for testing, and the URL to a product on your site.