The only time that returning by reference is useful is when you return a link to an existing data element in a class or return a link to an element inside a method parameter.
In other words, true. This variable cannot be “belonging” to the class (as in relation to its lifetime): it could be indicated to the class by some earlier function call or global / singleton, known to the class, but not being part of it, or even a newly allocated area in the shared memory or heap (although returning the link, not the pointer, assumes that ownership is not granted to the caller), but in the end the class should have some access to this data.
But in both cases there is no need to return anything; since the returned link is already freely available to the calling method.
No, because objects can have private and protected members and provide friendship to other classes or functions, it is therefore quite possible that the called function can access (and therefore return the link) some data that the caller does not have direct access to.
In addition, many functions find a specific variable to do some work, and then return a link to it. If the caller needed to make a separate call to find this variable again, it can be inefficient (as well as verbose in the calling code).
So, my conclusion is that there is no need to use return by reference at all. I'm right?
No ... due to the erroneous premise above.
Another unnecessary but convenient use of return by reference is illustrated by typical streaming functions:
std::ostream& operator<<(std::ostream& os, const X& x) { return os << x.str(); }
Above, the link to the tool says ...
std::cout << x << y;
... rated as ...
(std::cout << x) << y; operator<<(operator<<(std::cout, x), y)
That all the chains together are beautiful. Similarly:
while (std::cin >> x >> y) ...
... works not only because of the chaining for consecutive entries in x and y, but also because std :: cin is still available for evaluation in a boolean context that ultimately calls another member function, effectively asking operations.