Keys are used as an identifier for Widgets, Elements and SemanticsNodes.You don't need to use Keys most of the time, the framework handles it for you and uses them internally to differentiate between widgets. For more on them see:
https://flutter.dev/docs/development/ui/widgets-intro#keys
As for the Super keyword:
We see in your example the CardTitle widget extends the super class statelesswidget and in its constructor the ":" starts the "initializer list", a comma separated list of expressions executed before the constructors of the super classes and therefore also before the constructors body.
In the example in your question the key parameter passed to the constructor is forwarded to the named parameter key of the unnamed constructor of the super class.