They are very different things in truth, while both dealing with routing of a message:
Subscription is the process of routing a message based upon metadata and structure to a particular process.
Correlation is the process of routing a message based upon metadata and structure to a particular instance of a process that already exists.
Lets say that you have a process which receives MsgA, sends MsgB to another system which could take a long time to return, when it does return MsgC comes back with given data and finally you produce MsgD as final output which contains data from MsgC and MsgA.
Every message above has a subscription, you have to know how to receive or send that message. Only the MsgC return subscription requires correlation, because you need to be able to return to a specific orchestration process, the one with your matching MsgA, so that MsgD can be properly produced.
Put in a much more simple way, it is the difference between going to a High School football game, and an NFL football game. At the High School game, you come in, can sit anywhere you like and watch the game. At the NFL game, you come in and are issued a particular seat. The process of matching you and that seat is correlation. Going to a game is subscription.