Se ho capito bene tu vuoi che, dato ad esempio il vettore formato da (2, 3, 4), il vettore risultato sia (2, 6, 24) ?

Se è così, come hai fatto tu, crei il vettore nuovo con una malloc.. poi con un ciclo sugli indici "i", trovi il prodotto che desideri e poi inserisci tale prodotto nella posizione giusta, quindi:

codice:
float prod;

for (i = 0; i < n; i++)
{
          prod = 1.0;
          for (k = 0; k < i + 1; k++);
                prod = prod * vettore[k];

          vettore2[i] = prod;
}

return vettore2;
Non l'ho provato ma dovrebbe funzionare!