The ? is a so-called null-safe operator. It prevents a “Calling a member method xx on null error” if what you expect to return an object returns null. In this example, if the link field is empty or the page reference stored in that field does not exist, $page->link()->toPage() would return null instead of a page object, an calling the title() method would subsequently throw an error.
It’s a shorter form of writing
if ($p = $page->link()->toPage()) {
echo $p->title();
}
Using this shorthand is not always useful, though, as it might result in empty tags.