Ciao
Premetto che non sono un esperto, prendi con le pinze quello che dico.
-25 +40mA è l'Absolute Maximum Ratings for Cyclone IV Devices, limite che non va mai superato per nessun motivo con nessuno standard.
Non è facile come nei micro, puoi impostare diversi standard di I/O come 3.3-V LVTTL, 2.5v, 1.8v, etc.. ci sono poi gli standard di I/O differenziale SSTL-2, etc..
In base allo standard scelto (che si imposta tramite Quartus) si hanno vincoli diversi, nel paragrafo "I/O Standard Specifications" vengono specificati.
Se hai 4mA di corrente secondo lo standard scelto puoi utilizzare una resistenza, un transistor, un buffer, quello che vuoi purché non venga superato il limite di 4mA uscenti dal pin nonostante l'absolute maximum rating sia 40mA.
Nel CD della DE0-Nano come ti dicevo è presente un tutorial che ti mostra tutti i passaggi da fare per accendere un led che è già sulla scheda assieme alla sua resistenza come mostrato nello schema nelle pagine prima.
Per i pulsanti valgono le stesse cose dette prima, se fai un corto quando il pulsante è premuto si rompe tutto, serve quindi una resistenza.
I pulsanti on-board hanno resistenza e debouncing mi sembra, è tutto spiegato nel DE0-Nano User Manual che puoi trovare aggiornato online
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=593&PartNo=4.
L'I/O è delicato (sopratutto ad alte frequenze) anche per eventuali over/under shoot che per brevi periodi possono portare fuori specifiche i pin, nel datasheet è spiegato anche questo aspetto.
La tabella 6.2 mostra le feature supportate dagli standard che supportano l'adattamento di impedenza e le terminazioni in serie, per farla breve da quel che ho capito tutti questi standard NON sono pensati per pilotare carichi come led ma per comunicare ad alte frequenze con altri dispositivi.
Spero di aver chiarito qualche dubbio
Giovanni sicuramente saprà darti qualche info di più
Ciao