Since Swift supports method and initializer overloading, you can put multiple init alongside each other and use whichever you deem convenient:
c
Apart from the points other users have explained here is my bit of understanding.
I strongly feel the connection between convenience initializer and extensions. As for me convenience initializers are most useful when I want to modify (in most cases make it short or easy) initialization of an existing class.
For example some third party class that you use has init with four parameters but in your application the last two have same value. To avoid more typing and make your code clean you could define a convenience init with only two parameters and inside it call self.init with last to parameters with default values.