For point number one: You can follow the answer of Marco.
But if i were you,
i would create a configuration table that has a default value of a flag and let's make it equal false.
And in oncreate() method in the activity i will query for this value if it equals false, then i never load that data from the WS. And if it equal true, then it means that i loaded that data before, so i can use the local data that saved before in the DB.
In case of false, you will load that data from the WS and after make sure that you load it & insert it successfully, you have to update this flag to make its value equal true, to avoid reloading the data in the next time of opening the application.
I think you can use sharedPreference instead of the configuration table.
Point #2:
You want each time the application delete the old data & reload & insert the data again:
You will create your SQLite DB normally, then you can make a class that extends Application class, this class is the first class that will be loaded once the application is opened, it contains an onCreate() method, you can first delete all records, then reload all data again and insert it into your local SQLite DB.
Note: don't forget to add a tag in the androidMainfest.xml file to refer to your application class, its a must step.
Read more about application class examples over the internet.
http://developer.android.com/reference/android/app/Application.html