This is a pretty common question.
First, when we prep() the data, is it ALWAYS the training data that we have to provide to the function?
Yes, it should always use the training set (just like the model does).
Second, when we bake() the test data, why would we want to use quantities computed from training data? (This is assuming my understanding of what bake() does above is correct. If it’s not, please help me understand the functions better). Why not use the quantities from the test data itself?
You want the data being predicted to be normalized/on the same scale as the data that were used to build the model. Otherwise, the model is getting data that isn't quite right.
Here's a few good examples (I think) related to centering/scaling...
First, imagine that you are predicting a single sample. You can't compute the standard deviation from that and would be unable to make predictions.
Second, consider the case where the new samples being predicted come from the edges of the population. For example, the Chicago train data is used to predict how many people take the train each day. With Covid, the ridership is about 1/20th of what is used to be.
If we were to have a model built with all data and predict on any pandemic data, the means and standard deviations would be really different from those used to build the model. The predictor values given to the model would not be from the same distribution as the training set was.
Finally, think of the recipe as being very similar to the model: we are estimating stuff. We wouldn't think that it is a good idea to re-calculate the model parameters for each time predict() is invoked.