Short answer - it depends, but almost always extracts.
If speed/performance with your data sources/dashboards is an issue, extracts are the answer in 99.9% of cases. If you have very high requirements for reducing data latency and you need nearly live data (updated < every 15-60 minutes - it depends on size of the data), then a live connection is probably better. If you're trying to reduce the load on a Tableau Server, live connections can help put some of this load on the back end database. Shin's links probably say as much, but they will give you a few other items to think about.