Asset with related entry field in Matrix block
You said it yourself, the problem is that an Entries field can link to multiple targets. So it is an array of Entry Models you're given here, or more correctly, an ElementCriteriaModel.

To get the first linked entry's Url, all you have to change is to add the first method.

&lt;a href="{{ imageItem.imageLink.first().url }}"&gt;


But you said multiple links are allowed, so to show them all go through them in a loop.

{% for imageItem in block.images %}
    {% for linkedEntry in imageItem.imageLink %}
        &lt;a href="{{ linkedEntry.url }}"&gt;
            &lt;img src="{{ imageItem.url }}" alt=""&gt;
            &lt;span&gt;{{ imageItem.imageTitle }}&lt;/span&gt;
        &lt;/a&gt;
    {% endfor %}
{% endfor %}