How to find the images of the external semidirect product? Once we have two groups, let's say $H$ and $G$, it's fairly simple to find all split extensions of $G$ by $H$ by looking at the automorphism group $\text{Aut}(H)$ and homomorphisms $\tau: G \rightarrow \text{Aut}(H)$. Then, the extensions are described by the semidirect products $H \rtimes G$. In a similar way, once we have a group $A$, we can find a normal subgroup on $A$ and write $A$ as a semidirect product.
My question is, on the first case, unless the homomorphism $\tau$ is fairly trivial, we end up with a group $H \rtimes G$ that we know little about. The operation defined by the external semidirect product is awkward to handle, which leaves me pretty lost when trying to define who exactly is $H \rtimes G$.
The last one I tried was looking at the following split extension: $1 \rightarrow C_3 \rightarrow G \rightarrow C_2 \times C_2 \rightarrow 1$. So $G$ is a extension of the Klein four-group by $C_3$, the cyclic group of three elements. There are a few possible homomorphisms $\tau: C_2 \times C_2 \rightarrow \text{Aut}(C_3)$, so I decided to start with a simple one, a projection: $\tau(a, b) = a$ (I used this notation because $\text{Aut}(C_3) \cong C_2$).
And that was pretty much all I could do. Sure $G$ is isomorphic to one of the five groups of order $12$, but which one? Would I need to go through all groups of order $12$, searching for one with a normal subgroup isomorphic to $C_3$, whose quotient group is isomorphic to $C_2 \times C_2$? There must be more I can extract from the external semidirect product, otherwise it would make it pretty pointless for this objective. What am I missing here?
 A: In your specific case, note that the action of $C_2^2$ on $C_3$ does not depend on the second coordinate, so this is actually $(C_3\rtimes C_2)\times C_2$, i.e. $S_3\times C_2$. 
This is the only nontrivial split extension of $C_3$ by $C_2^2$: to define a homomorphism of $C_2^2\to \operatorname{Aut}(C_3)$, you need to define the image of each generator, and it is easy to check that the other two nontrivial homomorphisms are conjugate (by an automorphism of $C_2^2$).
If you are looking for a "general procedure", I doubt there is anything of the sort. Generally speaking, these sorts of problems in group theory are very hard, including the ones you have dismissed as simple. I don't think there is any easy way to find all maps $G\to \operatorname{Aut}(H)$ (even if we have a good description of this $\operatorname{Aut}(H)$), nor is it easy to find all normal subgroups of a given (arbitrary) group. These statements about hardness of respective problems can be made precise in the language of computability/computational complexity theory.
That said, if you are interested in finding out the result, instead of having any sort of deep understanding it, then computer algebra systems are your friend: they can compute all these things for (a large class of) finite, or even finitely presentable groups (and probably some others), and find a human-readable description of a given group. I've used GAP in the past, and I think you should have no trouble using it, as long as you are at all comfortable with programming.
But the hardness is still there: when the sizes of the groups become large (say, larger than 20 elements), expect the computation to require significant resources (in terms of computation time and memory).
