How would I pull in the first Matrix block including certain blocks only
Give this ago.

It will grab the first block that is either "Text" or "Text Image" and then you can use a switch statement to output your template depending on the block type.

{% set firstTextBlock = entry.body.type(['text', 'textImage']).first() %}

{% switch firstTextBlock.type %}

    {% case 'text' %}
        &lt;p&gt;{{ firstTextBlock.textContent|hacksaw(chars='100', append='...') }}&lt;/p&gt;

    {% case 'textImage' %}
        &lt;p&gt;{{ firstTextBlock.text|hacksaw(chars='100', append='...') }}&lt;/p&gt;

{% endswitch %}