I'm struggling to understand what the difference between SSH host keys and certificates is. When to use which ? How do they differ?
With an SSH host key the client has to already trust the host or has to accept the fingerprint on the initial contact - of course only after validating that the fingerprint matches the expected one. When using a certificate the host key is instead put inside this certificate and the additional features of the certificate like subject, issuer and signature of the issuer make it possible to derive trust into an yet unknown host key from trusting the issuer. It also makes it possible to have a limited life time of the host key and to revoke it. Essentially using a certificate makes using a PKI possible which make everything more scalable.
If you understand how certificate validation works in the browsers you can also compare it to self-signed certificate vs. CA issued certificates: the simple host key is comparable to a self-signed certificate, where one explicitly needs to add the trust to each browser. The host key inside a certificate together with a PKI is instead similar to the CA issued certificates we have in almost all cases when accessing a https-URL. In these cases the trust in the server certificate is derived from the trust in the root CA's located in the trust store of the browser or OS, i.e. only these root CA needs to be known up-front but not each server certificate.