Let us say I have a predicate, $P(n)$, and I want to say that it holds for every integer greater than $2$ (an example would be $P(n) = 2n>2+n$).
Let us furthermore say that the UOD (universe of discourse) is larger than $\mathbb{N}$, and that the order relation $>$ is not defined throughout the UOD (maybe the UOD includes the set of fruits, or whatever floats your boat).
What would be the most accurate way to write my statement in the language of first-order logic?
An idea would be:
(a) $\forall n (n \in \mathbb{N} \wedge n > 2 \rightarrow P(n))$.
However in my (perhaps stupid) view it is not nice to say "for all n" and then write something that is not defined throughout the UOD (in this case, $n>2$).
I have seen that it is common for people to qualify the domain of a variable in a universal quantification:
(b) $\forall (n \in \mathbb{N}) (n > 2 \rightarrow P(n))$.
However, is this notation strictly speaking part of the language of first-order logic, or is it hand waving? If it is part of the language, would it also an option to include the restriction $n>2$ within the universal quantification, along with the restriction $n \in \mathbb{N}$:
(c) $\forall (n \in \mathbb{N} \wedge n > 2) P(n)$
I have personally never come across something like this (and in a sense, it brings back the problem of the definition of $>$, as in (a), but then again we commonly write things like $A=\{n:n\in\mathbb{N} \wedge n>2\}$).
Your choice a) is perfectly fine at the informal level.
The choices b) and c) are ungrammatical, the leftmost parenthesis is wrongly placed. However, $(\forall n\in \mathbb{N})(n\gt 2\rightarrow P(n))$ is fine at the informal level.
Now to the "language of first-order logic" part. There is no such thing as the language of first-order logic. There are languages. A language is specified once we have decided on the set of constant symbols, the sets of predicate symbols of various arities, and the sets of function symbols of various arities.
So let $L$ be a specific language. This language needs in principle to have a binary predicate symbol $\lt$, and a constant symbol $2$ (but $2$ might be an abbreviation for a term built up using some constant symbol, and function symbols).
We may also need a binary predicate symbol $\in$. And there is great difficulty about $\mathbb{N}$, we may need to develop enough set theory to give a properly set-theoretic formulation of $n\in \mathbb{N}$. That is the most straightforward semi-universal way of dealing with the problem: let the language be an extension of the usual language of ZF, modified suitably to deal with objects that are not sets in the ZF sense, such as bananas.
It could be simpler to have a unary predicate symbol $\operatorname{Nat}$, with $\operatorname{Nat}(x)$ having intended interpretation "$x$ is a natural number." Then the sentence becomes $(\forall x)((\operatorname{Nat}(x)\land (x\gt 2))\rightarrow P(x))$. Here $P(x)$ will need to be a formula of the language.