Metrics are time-ordered data-points (data points over a period of time like DiskReads on EC2 or NumberOfObjects on S3).
Different AWS Services have different metrics and you can also create custom metrics for your application (with standard - 1 minute granularity - or high resolution - 1 second granularity).
EC2 offers a free set of metrics collated over a period of 5 minutes, but detailed monitoring (1 minute) can be enabled at a cost.
Alarms integrates with Metrics and allow to implement automatic actions based on threshold that you configure in relation to each metric.
These action could be launching (or terminating) EC2 instances or send SNS Topic can be configured to send notifications to a SNS Topic ( check my blog post about Alarms and Slack Notifications).
Often Alarms are based on thresholds, but these thresholds could prove too rigid or strict and to be really helpful they need to be analysed within a context/trend.
Anomaly Detection, is a feature that uses machine learning against your metrics to detect activity that lies outside the normal parameters.
Alarms have 3 states: OK, Alarm ( if metric is below or above the threshold) and Insufficient Data in case the metric is not available or not enough data is available to determine the alarm state.