Depends on the level of integration you are planning to do. If you are just using Power BI to connect to Salesforce, then Salesforce connector should all you need. If you are planning to integrate other applications or other reporting tools, then having the data in a database would be better in my opinion.
That Depends. The only issues I have seen for performance is in refreshing datasets. That varies depending on the size of table that you are using.
For example if you are loading a table with more than 20 columns(fields) and have over 20 million records. Then, expect the memory size of your Power BI report to be quite large. This would affect the data refresh time.