I always though it was “pure” which was easy to define, and “referential transparency” which was hard (see reddy’s two answers here)
That said, one difference I would imagine is that purity is a property of functions (which extends to.a language) while referential transparency (in the sense that say, reddy argues is too naive) is a property of expressions in context (which extends to a language). I would also say that purity is a semantic property, while RT is at least in part a syntactic property – i.e. I can imagine a pure functional language which violates RT simply through syntactic tomfoolery, and I can also imagine an impure functional language which respects RT. On the last point, take a language without lambdas, but only named definitions, and further, with named definitions only of functions, and print statements. I believe that one can always substitute names for their referents without changing the underlying semantics of sequences of expressions.
[edit: i changed that last section a bit, and its probably still not exactly correct, but I imagine there’s something that could work along those lines…]