An amalgam of 4 different textbooks
Usually, the state of a system of particles is fully described by their positions and velocities. The equations of motion specify the acceleration of the particles as a function of its state, so it is a second-order differential equation. Generally, a system of $N$ particles has $3N$ degrees of freedom in 3 dimensions, but this can be reduced when there are constraints.
The state (positions of all particles) of a system can be represented with generalised coordinates, which are not necessarily Cartesian. Usually we select them to use the fewest number of scalar quantities needed to define the state.
Degrees of freedom refer to the number of coordinates that can be independently varied in a small displacement. This is not always equal to the number of generalised coordinates, as constraints are not always holonomic.
A constraint is said to be holonomic if it can be expressed as
$$ f(\mathbf r_1,\dots,\mathbf r_i, \dots, r_N, t)=0 $$
Holonomic constraints are nice because they can allow the system to be expressed in terms of generalised coordinates that are independent of one another (this means that one generalised coordinate will not restrict the value of another generalised coordinate). Holonomic systems have $n$ degrees of freedom and at least $n$ generalised coordinates.
Note that a nonholonomic system can still have independent generalised coordinates.
The system takes a path between times $t_1$ and $t_2$ at coordinates $q^{(1)}$ and $q^{(2)}$ so as to minimise the action:
$$ S = \int^{t_2}_{t_1} L(q, \dot q, t) dt $$
(Assume there is only one generalised coordinate for simplicity) Suppose we change $q(t)$ by a small amount $\delta q(t)$. $\delta q(t)$ has to be 0 at the endpoints since the coordinates at the start and endpoints are defined. Then the difference in the action is
$$ \delta S = \int^{t_2}{t_1} \delta L(q, \dot q , t)dt = \int^{t_2}{t_1} \left( \frac{\partial L}{\partial q} \delta q + \frac{\partial L}{\partial \dot q} \delta \dot q \right) dt $$
, applying the chain rule. Morin uses a scalar multiplier on $\delta q$ and takes a partial derivative with respect to the scalar multiplier (keeping $q$ constant) to represent this change more rigorously.