Is there ANY EVER reason why i would return an object or variable by reference?
Yes, certainly. However, there's a strong distinction between returning by reference and returning by const reference. The latter gives you all of the potential performance benefits of returning by reference without the potential to lose control over your data.
Returning by non-const reference is still useful at times, but typically these times involve container classes and smart pointers. Yes, there are certainly dangers involved in aliasing, but it's our job as developers to decide when and where those dangers are justified.