The built-in Tuples function does exactly what you want:
In[1]:= a = {1, 2}; b = {4, 5}; In[2]:= c = Tuples[{a, b}] Out[2]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}
You can also accomplish this with Flatten and the more general Outer :
In[3]:= Flatten[Outer[List, a, b], 1] Out[3]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}
I mention this last fact, because a lot of the time when I find myself using Tuples , I do it as an intermediate step before Tuples Apply to each of the generated subscriptions right away and using Outer can save me.
source share