Construct a list from two other lists of unequal length

Some ideas:

Partition[Riffle[color, ind, {2, -1, 2}], 2]

Flatten[{color, ind}, {2}] // Cases[{_, _}]

{color, PadRight[ind, Length@color]}\[Transpose]

ind ~Riffle~ color ~Partition~ 2 ~Reverse~ 2

MapIndexed[{#, Extract[ind, #2]} &, color]

Take[#, All, Min[Length /@ #]]\[Transpose] &[{color, ind}]

All produce:

{{"red", 0}, {"green", 1}, {"blue", 2}, {"black", 3}}

I'll note that the last method, which was perhaps my most serious attempt to answer this pragmatically, can be applied to any number of lists:

fn = Take[#, All, Min[Length /@ #]]\[Transpose] &;

fn[{{1, 2, 3}, Alphabet[], 2^Range@5}]
{{1, "a", 2}, {2, "b", 4}, {3, "c", 8}}

Here is a function to do it for any two lists. It doesn't care about the order in which the lists appear as arguments.

makePairs[a_List, b_List] :=
  Transpose[Take[#, Min[{Length @ a, Length @ b}]] & /@ {a, b}]

makePairs[color, ind]

{{"red", 0}, {"green", 1}, {"blue", 2}, {"black", 3}}

makePairs[ind, color]

{{"red", 0}, {"green", 1}, {"blue", 2}, {"black", 3}}


Another variant:

DeleteCases[
 Transpose[PadRight[{color, ind}, Automatic, Missing]], {___, 
  Missing, ___}]