Diese Filter-Struktur ist ein Feature von Wordpress und eine der üblichen Weisen, wie man in Wordpress in den Programmablauf eingreift (Hat also erstmal nichts mit Basis-PHP und auch nichts mit Mastodon zu tun).
Allerdings ist mir anhand des gezeigten Codes nicht ganz klar, wo eigentlich der Aufruf der Mastodon-API passiert, insofern kann ich jetzt nicht sicher sagen, wo genau das wäre.
Irgendwo im Mastodo-Plugin gibt es einen Aufruf $enabled = apply_filters('share_on_mastodon_enabled, $enabled) bzw. $status = apply_filters( 'share_on_mastodon_status', $status, $post).
Die Variablen-Namen könnten auch anders heißen, aber diese sind recht wahrscheinlich. Das heißt, dass jeder Aufruf von add_filter abgehandelt wird, bevor die Variable weiter verarbeitet wird.
Es können sich also beliebig viele Filter hier einklinken und den Inhalt verändern, auch nacheinander. Die Reihenfolge bestimmt sich aus dem zweiten Parameter nach der Funktion, in diesem Fall also 10. Der 2er zeigt an, wie viele Attribute übergeben werden (2, also $status und $post), wobei das erste Attribut immer das ist, das verändert wird und weitere Zusatzinformation darstellen.
$post->post_content ist auch eine Sache von Wordpress und ist der zentrale Inhalt einer Seite bzw. eines Beitrags
wp_strip_all_tags schmeißt alle HTML-Styles und Scripts raus und macht aus dem Inhalt normalen Text. Also ja, $status ist der Inhalt, nachdem er bereinigt wurde.
Die Variablennamen wählst außerdem du, d.h. wenn du dich damit wohler fühlst, kannst du statt $status auch überall $text o.Ä. schreiben, es muss nur im Funktionsaufruf und im Verarbeitungscode der selbe sein.
$status .= "\n\n" . get_permalink( $post ); fügt dann noch Link zum Beitrag hinten an den den Text an. get_permalink holt den Link zu $post und . ist die normale String-Zusammenfügung in PHP.
Schneelands Code-Anpassung sollte korrekt sein. Ich nehme an die Anpassung auf 498 erfolgt zur Einbeziehung der beiden Zeilenumbrüche (\n)?