Multiple ways of doing this depending on what you feel like doing.
Custom block type
Create a custom block type, add the fields you need, add them to a region and set to the homepage. Theme the twig files that relate to this block type.
Paragraph type
You can set up a paragraph type to build this into the node itself. Create a paragraph type that has title, image, summary, and link - then a reference field on the host node that limits the cardinality to 3 total. Theme up the twig files that relate to this paragraph.
Entity reference field on the node
You can even simply set a reference field to other nodes and let the editor enter what nodes they want to reference, and set the field formatter to a display mode (for example 'Call to Action' or 'Card'), and theme those twig files. Simply printing {{ content.field_foo_reference }}
will render them as their view mode set in the field formatter. Fields like 'summary' can live on the referenced node - perhaps even a body field that is trimmed (look at adding Smart Trim for better trimming options on long formatted text fields).
Personally, I would go with the third method - it is the quickest of the three to do. I think you can even achieve this with core alone - something you can't do with the second method. It also puts all the work into the node form, instead of require editors to fool with the block system overview and create blocks to do this. Of course, you can also add this reference field on a block type and employ the same method - however since the homepage for me is almost always a node, I like to contain it in the same spot.