CloudWatch Events delivers a near real-time stream of system events that describe changes in AWS resources.
Using simple rules that you can quickly set up, you can match events and route them to one or more target functions or streams.
CloudWatch Events responds to these operational changes and takes corrective action as necessary, by sending messages to respond to the environment, activating functions, making changes, and capturing state information.
CloudWatch Alarms just notifies you of a metric breaching the specified threshold, like if the CPU Usage goes above 50%, then do an SNS notification to the owner.
Whereas with CloudWatch Alarms, it actually trigger an action something based on a condition, like an Lambda function is triggered when a root user logs in or take an EBS snapshot every hour.
Note: CloudWatch Events and EventBridge are the same underlying service and API.