Почему не выводится последний элемент из бд mysql?
Вопрос "почему не выводится" здесь неуместен. Здесь скорее подойдёт вопрос "Этот код вообще хоть как-то работает?" Спойлер: нет.

Этот код неправильный по стольким параметрам, что у меня просто нет слов. 
Он писался явно без малейшего понимания, а просто методом "подставлю какой-то код, авось подойдёт".
Причём понимания нет ни на каком уровне - ни того как работает БД, ни того как работает РНР, ни того как РНР работает с БД. Ни даже простого житейского здравого смысла.  Зачем в message_get() все эти $user_name = mysqli_real_escape_string ($username);?

Во-первых, с помощью LAST_INSERT_ID получить "последнюю запись" можно только сразу после вставки. А поскольку в "основном коде" получение сообщения явно не выполняется в одной ветке с записью, то LAST_INSERT_ID не сработает. Причём тут даже простой житейской логики нет. Если сначала один пользователь добавил сообщение, а потом второй, то при получении "последнего" как БД узнает, чьё "последнее" сообщение надо показать?
Чтобы показать последнее сообщение для определённого пользователя, надо, как правильно отметили в комментариях, надо отсортировать таблицу по времени добавления и выбрать только 1 строку с помощью LIMIT.
Но кроме этого надо указать, для какого пользователя мы получаем это сообщение.

Во-вторых, функция mysqli_real_escape_string() вызывается неправильно, она будет выдавать ошибку. А по-хорошему вообще нужно использовать не её, а подготовленные выражения. 

В-третьих, 'message' в запросе вернёт слово 'message', а совсем не само сообщение. 

В-четвёртых, view_message хочет показать несколько значений, но в запросе выбирается только это 'message'

Во-пятых, как правильно написали выше, функция ни сама ничего не возвращает, ни даже не получает запрошенную из БД информацию.  Функция должна выглядеть по крайней мере так

function message_get($user_id) {
    global $db;
    $chat_id = mysqli_real_escape_string($db,$user_id);
    $query = "SELECT message_id, user_id as chat_id,  message as `text` 
        FROM `secret_messages` 
        WHERE user_id='$chat_id' ORDER BY id DESC LIMIT 1";
    $result = mysqli_query($db, $query);
    return $result->fetch_assoc();
}
и потом получать при вызове
$post = message_get($user_id);
'text' => 'Текст секретного сообщения: ' . $messages,
И что такое $messages? Кто ему присвоил значение?

message_get() каким образом, по-вашему, вообще возвращает текст сообщения или хоть что-нибудь?

Last but not the least: сделал mysqli_query(... "SELECT ..."), сделай уж потом и fetch*