Second-order logic is an extension of First-order logic where, in addition to variables which can range over objects (elements of the domain class), there are variables which can take Predicates as values. This means we can quantify over predicates too. Predicates are also called Properties, and in set-theoretic Semantics (see Model theory), it means subsets of the domain class.
https://math.stackexchange.com/questions/2483821/differentiating-first-second-order-logic
https://plato.stanford.edu/entries/logic-higher-order/
https://www.lesswrong.com/posts/SWn4rqdycu83ikfBa/second-order-logic-the-controversy