What you heard is correct. If you have pure functions and provided, that you have working primitives of concurrency, you can go to any place in you code, where you call a pure function and change the code, so that the function runs in a new concurrency (or parallelism) primitive. For example in a new thread or process. The places where this is useful can be discovered by profiling.
Another advantage is, that you can unit test each function on its own, without setting up a whole host of preconditions. That's because of referential transparency.
Comments
What you heard is correct. If you have pure functions and provided, that you have working primitives of concurrency, you can go to any place in you code, where you call a pure function and change the code, so that the function runs in a new concurrency (or parallelism) primitive. For example in a new thread or process. The places where this is useful can be discovered by profiling.
Another advantage is, that you can unit test each function on its own, without setting up a whole host of preconditions. That's because of referential transparency.