If I move to Italy and I work there for some years with a "contratto a progetto" (also called co.co.co or co.co.pro) I will have my retirement fund in "gestione separata", then if I find a permanent contract I will have some other retirement fund in "gestione ordinaria". Can I join the two retirement funds?
Yes, there are two ways to join them:
They are called "ricongiunzione" (sounds like reconjunction) and "totalizzazione" (totalization). From these the second one is free.
This page in Italian explains how the latter works.