Esatto, nella riga
inputcollezione&(horror);
quel carattere & non ha senso, almeno nel tuo programma. Tu volevi passare il puntatore alla struttura horror e quindi dovevi scrivere
inputcollezione(&horror);
e dato che la funzione non restituisce nulla, doveva essere di tipo void, quindi all'inizio dovevi scrivere
void inputcollezione(struct collezione *c);
Quindi nella funzione stessa, non c'era alcun return e l'input dei dati doveva essere
void inputlibro(struct collezione *c)
{
int i;
for(i=0; i<10; i++)
{
printf("Inserire titolo del libro\n");
scanf("%s", c->l.titolo);
in cui i è l'indice del nuovo libro da aggiungere, che ho per esempio impostato in un ciclo da 0 a 9 ...
Il resto dei problemi è simile.
Effettivamente devi studiare meglio puntatori, funzioni e tutto il resto ma queste indicazioni ti potrebbero essere utili.