el transistor está allí porque el relé funciona a 12 V y probablemente no tenía más de 100 mA de corriente para funcionar. el arduino no puede proporcionar una señal de esa magnitud, por lo que el transistor arranca su capacidad de salida ...
El diodo está ahí porque el relé contiene un electroimán, y un electroimán es un tipo de inductor, y cuando intentas apagar un inductor genera un alto voltaje, que fácilmente podría ser de cientos de voltios. pero el transistor BC547
solo puede soportar algunas decenas de voltios V ce cuando el transistor apaga la energía en el inductor, lo que hace que el terminal conmutado sea más positivo hasta que llegue a 0,6 V por encima del suministro de 12 V y luego el iN4001
comienza a conducir la corriente y la energía almacenada se quema como calor en la resistencia del electroimán y en la caída de tensión del diodo. Esto se denomina diodo de marcha libre o catch diode
Toda esta complejidad podría evitarse utilizando un relé de estado sólido , ya que pueden activarse directamente por las salidas de arduino, pero pueden ser bastante costosas.