number of digraphs where each indegree and outdegree equals 2 up to isomorphism, how many unlabeled digraphs with 5 nodes have each indegree=2 and each outdegree=2?
for 3 nodes, the answer is 1 (each node points at every other node, a 3-cycle of double arrows).
for 4 nodes, the answer is 2 (one is a 4-cycle of double arrows, and one has two non-adjacent double arrows).
 A: In an adjacency matrix of such a digraph, there are $\binom{5}{2}=10$ possible rows.  There are $10^5$ ordered $5$-tuples of such rows, and thus $10^5$ digraphs (allowing loops) with each out-degree $2$.  Filtering out the graphs with loops and without all in-degrees $2$, leaves us with $216$ labelled digraphs.
These matrices can be generated using the GAP code:
R:=Filtered(Tuples([0,1],5),r->Sum(r)=2);; # out-degree 2
S:=Tuples(R,5);; 
S:=Filtered(S,A->ForAll([1..5],i->A[i][i]=0));;  # loop-free
S:=Filtered(S,A->Sum(A)=[2,2,2,2,2]);; # in-degree 2

We can find isomorphism class representatives by finding those in canonical form (for some desired canonical labelling).  In GAP, strings have an ordering, so the canonical label can just be the minimum string of any adjacency matrix of isomorphic graphs.
We can generate the isomorphic adjacency matrices by:
IsomorphicAdjacencyMatrix:=function(A,alpha)
  return List([1..5],i->List([1..5],j->A[i^alpha][j^alpha]));
end;;

and identify whether or not an adjacency matrix is canonical by:
IsCanonicalAdjacencyMatrix:=function(A)
  return Minimum(List(SymmetricGroup(5),alpha->String(IsomorphicAdjacencyMatrix(A,alpha))))=String(A);
end;;

The above function generates a list of $5!$ isomorphic graphs corresponding to the $5!$ relabellings; it returns true if the input adjacency matrix is the minimum string in this list.
Then filter out the non-canonical ones from our $216$ labelled graphs by:
S:=Filtered(S,A->IsCanonicalAdjacencyMatrix(A));

This leaves $5$ digraphs, drawn below:

