I concur with @Greg. I regularly use the PBIT file for version/source code control for all of my reports, as it includes all of the markup for the report, the data model, and the data refresh steps (M code) but none of the imported data. If you open a PBIT and click Refresh (assuming you have access to all data sources), it will pull in all data and look exactly as you expect it to. With all of my reports versioned, I can also go back to a prior revision at any time and just refresh the data. I just have to remember to do a File - Export - Report Template each time I make report changes so the PBIT is updated. This applies to question 2.
For question 1, you will only publish a PBIX since opening a PBIT creates a PBIX equivalent in the desktop IDE. However, if you have the data refresh working in the service (as opposed to a static data set), you could publish the “empty” PBIX to the service and let the service refresh the data. You could also refresh the model locally, then publish the loaded PBIX to the service, then close the local version without saving the data because the PBIT has all the report details in it.
John C. Pratt