You have the following options
1) Don't GAC the pipeline components, just deploy them to the Pipeline Component folder.
Advantage. No GAC conflict.
Disadvantage: Might cause an unexpected issue when making a change impacts another application than what you are making the change for.
2) Create a common application where you deploy the Pipeline Component DLLs to, and then have the other Applications Reference that one:
Advantage: Only deploy the Pipeline Components once:
Disadvantage: You need to undeploy all referencing applications when you want to update them, or you need to change the Assembly Version number and do a side by side deployment (having more than one version deployed) and then update the applications that need the updated version.
3) As you said, have each application have a copy of it with it's own name:
Advantage: No GAC conflict:
Disadvantage: Duplicated code, and you make have to make fixes in multiple versions.
So yes "Is it possible to deploy in such scenario where 3 apps use the same custom pipelines" is option 2
And yes "Or each application should have its own custom pipelines ( different names)." is option 3.