Events are objects that contain information about the execution of the application. They are mainly used by service providers like block explorers and wallets to track the execution of various messages and index transactions.
Transactions are objects created by end-users to trigger state changes in the application.
Messages are module-specific objects that trigger state transitions within the scope of the module they belong to.