The sf::Thread::Thread function Creates a thread, in other words it loads it into memory. You need to call sf::Thread::launch() in order for it to execute. In Windows it is the equivalent of calling the "CreateThread()" function with the 'CREATE_SUSPENDED' creation flag. With very few exceptions threads should be created in a 'suspended' mode so that synchronization objects\functions can receive valid handles to them.
The first error is because you don't pass functions by reference like that, just use the name of the function.
He wasn't passing by reference, he was taking the address, which isn't necessary for freestanding functions, but is required to get a member function address. The error is indicated because sf::TcpSocket::receive does not have the correct signature for use as an argument to sf::Thread. (The member function should take no arguments other than the implicit this pointer which should be the second argument to the sf::Thread constructor.)