Letzteres ist was wirklich auf dem Arduino ist und das ist nicht genau das gleiche wie die Standard Lib, aber die wichtigsten Funktionen sind gleich. Und auf der ersten Seite ist es tausend mal besser erklärt.
Wie du da siehst gibt es einige der String Funktionen auch genauso mit Speicher. Der einzige Unterschied ist dass die String Funktionen den Null-Terminator verarbeiten.
Die includes brauchst du in diesem Fall auf dem Arduino nicht. Das übernimmt die IDE für dich im Hintergrund. Das Standard Zeug wie string.h und math.h sind automatisch drin. Mit einer IDE die auto complete hat (z.B. Visual Studio oder Atmel Studio) sieht man das auch.
EDIT:
if(strcmp (*main_LED_st, *tp_LED_st))
Mach den Stern-Operator weg. Du willst das Array, d.h. einen Pointer übergeben. Der Stern dereferenziert die Adresse, so dass du dann den Inhalt der ersten Zelle hast. Das kompiliert auch gar nicht.
Du übergibst Pointer auf die beiden Arrays und die Länge des Speicherbereichs, der verglichen werden soll. Ergebnis: 0 heißt gleich, nicht 0 heißt ungleich.
Eine Feinheit, die dir dabei vielleicht nicht klar ist:
Das geht weil 0 = false ist. Und alles ungleich 0 ist true. Die Funktion kann auch negative Werte zurückgeben und durch die Art wie true/false definiert ist, sind diese dann auch true.