1x1 convolutions is a very simple trick generalized by the Inception module published by Google in 2014 in the famous paper Going Deeper with Convolutions.
The most common use case is to modify the output channels of the input feature maps. This is mostly used when you have a net architecture with multiple branches that needs to be aggregated into one result (such as in your image or such as in the Inception module).
Here is an example:
- Input Feature map: $F_{in}: B \times H \times W \times C_{in}$
- Convolution: $W: 1 \times 1 \times C_{out}$
- Output Feature map: $F_{out}: B \times H \times W \times C_{out}$
In plain english: 1x1 convolutions modify the output feature maps channels $C$ without altering the resolution $H \times W$.
When is this useful? For when you need to expand or shrink the feature maps channels. Examples: Inception, SE Blocks, Bottlenecks Blocks, Detectors Head (RetinaHead)...
Here is a more in depth article