Exactly. And then you can decide whether to define a constructor for Ball(Red) or Ball(Red()).
Yes to both.
Yes, you use this syntax in order to capture the type in a variable, T. But you could also in stead do
Ball(c::Color) = Ball{typeof(c)}()
and then Ball(Red()).