Molto brevemente, raspberry è a tutti gli effetti un piccolo computer, solitamente venduto con un SO linux derivato da debian preinstallato. Quindi puoi fare tutto quello che puoi fare con qualsiasi pc (io ad esempio ci ho programmato in python). Al limite se ti manca qualcosa (tipo un compilatore o un interprete) puoi installarlo così come faresti su debian. Teoricamente potrebbe capitare che non esista un compilatore per quella specifica architettura, ma nella realtà se non usi linguaggi troppo esotici non ci sono problemi.
Arduino lo conosco meno. Comunque la grossa differenza è che al posto di un processore ha un microcontrollore, e solitamente non c'è un sistema operativo completo ma solo un bootloader. Quindi solitamente programmi in un simulatore, compili e infine carichi l'eseguibile.