Using this language, you can talk about a domain which is a set of values. It’s
like having a database and writing queries against it using the first-order
logic as the query language. For example, the statement $\exists x (\exists y
(\neg (x = y)))$ asserts that there at least two distinct values in the domain.

First-order logic, abbreviated FO, is not very powerful. You can make it more
powerful by adding some extra predicates. For example, if you want to talk about
natural numbers, you could add the predicates + and <. Then you can state theorems like $\forall x (\forall y (x \leq x + y))$. The resulting logic is called FO(+,<).

FO is called first-order logic, because the existential and the universal
quantifiers quantify over atomic values. In second-order logic (SO), you’re
allowed to quantify over predicates. In third-order logic, you’re allowed to
quantify over predicates of predicates etc. This gives you a lot of leverage.
For example, in SO you can assert that the domain contains even number of
elements. This is not expressible in FO.

The exact set of connectives varies by the source, but it does not really
matter. Having ∧, ∨, and ¬ is enough, because you can express all the other
logical connectives in terms of them.