Initialization in Swift allows structs, classes, and enums to set initial values for properties and perform other initialization tasks. Designated initializers must call a designated initializer from the superclass, while convenience initializers can call any initializer from the same class but must ultimately call a designated initializer. Initialization can include custom parameters, set default values, and return nil in failable initializers if initialization fails.