Each text holds - internally - a pointer to the font it is to use when drawn. You set this pointer when using setFont().
You are passing the font by value to the ft_load_text function so the font inside that function is a temporary copy. All of the texts then point to that copy and then the copy is destroyed when the function ends.
Any further use of those texts will attempt to use the pointer to memory that is not longer allocated.
The solution is to pass fonts by reference (or pointer), like this:
std::vector<sf::Text> ft_load_text(const sf::Font& font)
(notice the ampersand)
Also, since your function isn't modifying the sf::Font, it can be a const reference. I added const to the code line above already