Because the number inside the { and } within the format string is the index to the following parameters:
Console.WriteLine("{0}:{1}:{2}", a, b, c);
^ ^ ^
| | -- parameter 2: 'c'
| ------ parameter 1: 'b'
---------- parameter 0: 'a'
It's a way of tieing parameters to positions within the resulting string - they don't have to be in numerical order, or even different!
Console.WriteLine("{1}:{0}:{2}", a, b, c);
Console.WriteLine("{0}:{1}:{0}", a, b)
;