This question has two parts.
1. Do I need to publish the data source and workbook separately? I found that for my large-ish data sets (> 30gb) it's more likely that the publish will succeed if I do them separately. For smaller ones, it doesn't seem to make any difference.
2. If I publish the data source first, and opt to have its extract updated on a schedule, what happens if I select the same update schedule for the workbook? Does the server end up refreshing the extract twice?
2. Yes it does indeed refresh twice. Tableau does 2 things, it firsts refreshes the data source extract and then next it refreshes the data in the workbook. Just doing it at one level would be sufficient.