The exogeneitymoment condition $\mathbb{E}(u_i x_i) = 0$ is the momentexogeneity condition $\mathbb{E}(u_i x_i) = 0$. ($\mathbb{E}(u_i | x_i)=0$ is a statement about a random variable. It is not a moment condition. It is an equality of random variables.)
OLS is a special case of Method of Moments estimator where the estimates are given by the sample analogue of a population moment condition. For OLS, the sample analogue of $\mathbb{E}(u_i x_i) = 0$ is $$ \sum e_i x_i = 0, $$ where $e_i = y_i - \hat{\beta} x_i$. This sample condition characterizes $\hat{\beta}$.
As the terminology suggests, GMM is a generalization of method of moments. IV estimator is a special case of GMM, where the moment condition is $\mathbb{E}(u_i z_i) = 0$ with $z_i$ being a vector of IV's. (For OLS, $z_i = x_i$. Exogenous regressors are examples of instruments.)
When system is over-identified, the sample version of $\mathbb{E}(u_i z_i) = 0$ need not have a solution. Therefore one minimizes an appropriate quadratic form instead---this is what makes GMM "generalized", compared to MM.
Strictly speaking, 2SLS is an algorithm that implements the IV estimator, rather than an estimator. Trivially you can find other equivalent algorithms that implements IV. This slight abuse of terminology is, however, standard.
GMM is, of course, not restricted to IV. See for example, Hansen's seminal application of GMM on the equity premium puzzle.
It does not make sense to speak of estimation for under-identified models---they are unidentified.