As an answer, I'll post a reduction from SAT to show the NP-Hardness of the problem.
Assume we are given a SAT instance in Conjunctive normal form, and
Let $C = \{C_1, \ldots, C_m\}$ be its set of clauses.
Construct a graph $G$ by first adding $m$ disjoint cliques, one for each clause.
Denote by $G_i$ the clique for $C_i$. Now, $G_i$ has as many vertices as $C_i$, one for each literal appearing in $C_i$. If $C_i = \{x_{1}, x_{2}, \ldots, x_{k}\}$, then $G_i$ has vertex set $V(G_i) = \{v_{i_1}, v_{i_2}, \ldots, v_{i_k}\}$, where the $v_{i_j}$ corresponds to $x_j$, the $j$-th literal of the $C_i$ clause. Note that some of these literals might be negated.
We then add an edge between each vertex pair $v \in V(G_i), w \in V(G_j)$ such that the literal corresponding to $v$ is the negation of the one corresponding to $w$. This guarantees that no solution of $G$ includes both a literal and its negation.
We now want to show that the SAT instance is satisfiable if and only if $G$ has a solution (an independent set of size $m$).
Suppose that the SAT instance is satisfiable by the set of literals $X = \{x_1, \ldots, x_n\}$. We then construct a solution for $G$.
For each $G_i$, there must exists a vertex $v \in V(G_i)$ corresponding to the literal $x$, such that $x \in X$ (because the $C_i$ clause is satisfied by $X$). Simply pick one such vertex in each $G_i$. Since $X$ does not contain both a literal and its negation, no pair of chosen vertices shares an edge, and therefore we have a solution.
Conversely, let $V = \{v_1, \ldots, v_m\}$ be a solution for $G$. Now, the set of literals corresponding to the ones in $V$ must be an assignment that satisfies the SAT instance, as finding $V$ corresponds to picking one literal per clause without picking both a literal and its negation.
[EDIT]
Let's sketch a transformation of an instance of a graph $G$ to a SAT-instance in CNF (as asked by OP in the comments).
For each vertex $v_i \in V(G)$, add variable $v_i$ to the SAT instance.
Given an assignation for the SAT instance, we will interpret $v_i = True$ as choosing $v_i$ in $G$ in a solution. So we want to make the SAT instance satisfiable if for each clique $K$, there is some $v \in V(K)$ that the assignment sets to true, and that avoids setting two adjacent vertices to true.
Take a clique $K$ with $V(K) = \{v_1, \ldots, v_k\}$. To enforce choosing one of its vertices, add the clause $(v_1 \vee v_2 \vee \ldots \vee v_k)$. Do that for every clique.
Then, for two adjacent vertices $v_i, v_j \in V(G)$, we prevent setting both to true by adding the clause $\neg(v_i \wedge v_j) \equiv (\overline{v_i} \vee \overline{v_j})$. Do that for every pair of adjacent vertices.
Then, any satisfying assignment must choose one vertex per clique, and cannot choose two adjacent vertices.