And based on options (local pickup / shipping), we can control which fields to be displayed for billing address? As I dont want to force my customer to enter full address if he is opting for Local Pickup.
Yes based on the hooks and templates in WooCommerce you can customize the flow of checkout to be anything you want. I know that's a simple answer but most things you can think of can be done in WC. Even pulling in live shipping rates via an API to FedEx, USPS, UPS, etc...
You first have to create Shipping zones and add shipping methods specific to those zones. Now as soon as you enter the address on the checkout page, WooCommerce searches for that address in all the zones, and if matched display all the shipping assigned to that zone.
Or you can try this also:
Under WooCommerce/Settings/Shipping zones clear the 'Zone regions' then under shipping options/ Calculations uncheck both:
"Enable the shipping calculator on the cart page" and
"Hide shipping costs until an address is entered"