Ciao,
non è semplice rispondere in modo sintetico alla tua domanda, perchè alfresco offre moltissime opportunità di personalizzazione (tieni conto che potresti addirittura andarti a modificare il codice nativo -che è opensource- e ricompilarti la tua versione personale di alfresco!).
provo a darti qualche dritta, sperando ti sia utile.
Innanzitutto, se sei alle prime armi, prima di buttarti a capo fitto nella programmazione secondo me dovresti imparare bene l'architettura di Alfresco, come funziona il suo repository, i permessi e le operazioni che puoi compiere con la sola interfaccia grafica.
Alfresco infatti permette una ampia personalizzazione anche senza ricorrere alla programmazione: action, rules, workflow,…
Poi imparerei come si costruisce un content model personalizzato.
Infine passerei alla programmazione.
Riguardo questa provo a riassumerti brevemente (tieni conto che le distinzioni che farò sono più teoriche che pratiche, in quanto le varie aree tendono a confondersi spesso):
Innanzitutto cerca di capire di volta in volta se devi estendere le funzionalità di Alfresco (quindi se vuoi esporre delle nuove funzioni che non ci sono nativamente) oppure se vuoi sfruttare le api esistenti per interfacciarti con esso e magari integrarlo con dei software esterni…
Nel primo caso puoi sviluppare dei webscript personalizzati oppure, a seconda dei casi, delle custom action o dei behaviour.
Puoi usare javascript oppure java, a seconda di quale linguaggio padroneggi meglio (ma il java tende ad essere più macchinoso in molte situazioni).
Nel secondo caso invece puoi sfruttare i vari protocolli messi a disposizione da Alfresco per interrogare e manipolare il repository.
I più utilizzati attualmente sono REST e CMIS (Evita SOAP se possibile).
Spesso può accadere che tu debba fare entrambe le cose: scrivere un webscript per esporre una nuova funzione e poi sfruttarla con un client (Rest ad esempio).
Sicuramente ho dimenticato di menzionare qualcosa… ma spero che possa servirti come base di partenza.