Нет ссылки на первую функцию, поэтому ее можно игнорировать.
Вторая функция "вызывается", но, как вы заметили, только в неоцененном контексте. Это означает, что вызов никогда не будет оценен. Компилятор определяет тип, который функция вернула бы, если бы она была вызвана, но это все. Поскольку она никогда не вызывается, сама функция никогда не нужна и не используется как функция, поэтому компилятор не генерирует для нее никакого кода.
Сообщения отличаются, потому что, хотя конечный эффект тот же,каждый достигает этого результата немного по-своему, и компилятор пытается дать вам информацию, которая может быть полезна.