Message is why this attempt is not live: the failure, or the note that a newer deployment went live before this build finished. Empty while it is fine.
Status is where the attempt got to: building while its image is being built, deploying once its CR reached the cluster — which is the terminal success state, the app's own status is what turns live — error with the reason in Message, or superseded when a newer version went live first.
Version counts this app's deployments, from 1 and monotonically. It is what ORDERS them: a deploy only goes live if no higher version already is, so a build that finishes late is superseded instead of overwriting a newer one.