1) The term regression comes from the fact that in the usual simple linear regression model:
$y = \alpha + \beta x + \epsilon$
that unless the outcome, $y$, and predictor, $x$, variables are perfectly correlated, the fitted values, $\hat{y}$, are closer to the mean of the outcome, $\bar{y}$, (after standardization) than the predictor variable, $x$, is to its mean, $\bar{x}$ (after standardization). Thus the outcome exhibits regression toward the mean.
$|\hat{y} - \bar{y}| / s_y < |x - \bar{x}| / s_x $
For example if we use the BOD data frame built into R then:
fm <- lm(demand ~ Time, BOD)
with(BOD, all( abs(fitted(fm) - mean(demand)) / sd(demand) < abs(scale(Time))))
## [1] TRUE
For a a proof see: https://en.wikipedia.org/wiki/Regression_toward_the_mean
2) The term on comes from the fact that the fitted values are the projection of the outcome variable onto the subspace spanned by the predictor variables (including the intercept) as further explained in many sources such as http://people.eecs.ku.edu/~jhuan/EECS940_S12/slides/linearRegression.pdf .
Note
Regarding the comment below, what the commenter is stating is what the answer already states above in formula form except that the answer states it correctly. In fact, due to the equality:
$(\hat{y} - \bar{y}) = \hat{\beta} (x - \bar{x}) $
the dependent variable is not necessarily on average closer to its mean than the predictor is to its mean unless $| \beta | < 1$ . What is true is that the dependent variable is on average fewer standard deviations from its mean than the predictor is to its as stated in the formula in the answer.
Using Galton's data to which the comment refers (which is available in the UsingR package in R) we run the regression and in fact the slope is 0.646 so the average child was closer to its mean than its parent was to its mean but that is not the general case.
library(UsingR)
fm2 <- lm(child ~ parent, galton)
coef(fm2)[[2]] # slope
## [1] 0.646
The BOD
example in (1) above is one where the dependent variable is not closer to its mean unless one measures closeness in standard deviations as the slope > 1.
coef(fm)[[2]] # slope
## [1] 1.7214
with(BOD, all( abs(fitted(fm) - mean(demand)) < abs(Time - mean(Time))))
## [1] FALSE