Wie @saputello bemerkt, wäre es tatsächlich besser, die (guten und berechtigten) Fragen einzeln zu stellen.
Ich würde allerdings ganz allgemein die Erstellung eines solchen Diagramms etwas anders machen.
Du lädst zum Beispiel die `positioning`-Library aber benutzt sie nicht mal.
Die manuelle Positionierung der Nodes (hier sogar mithilfe der `calc`-Library) ist eher ungünstig da sehr unflexibel.
Hier böte sich tatsächlich auch an, die Keys der `positioning`-Library zu verwenden, um eine konsistente und einfach nachträglich zu ändernde Platzierung zu erreichen.
Noch mehr scheint es sich hier auch zu lohnen, die `matrix`-Library (bzw. das `\matrix`-Makro, das es bereits ohne die gleichnamige Library gibt) zu verwenden.
Bis auf einige wenige Nodes, die größer sind als eine Zelle, würde es die Erstellung einer solchen Graphik stark vereinfachen.
----
Deine nummerierten Fragen lassen sich relativ einfach beantworten:
1. Die `align`-Option funktioniert leider nicht so.
Sie richtet nur den Text innerhalb der (internen) TeX-Box aus, sofern du aber weder einene Zeilenumbruch `\\` oder die `text width`-Option (die die Breite dieser Box direkt festlegt) nicht benutzt, ist diese Box nur so groß wie der Text in ihr drin.
Was tun?
Einige Möglichkeiten kommen mir in den Sinn:
1. Erstelle die Node ganz gewöhnlich ohne Text, aber mit einem `\strut` (damit die Box eine Höhe und Tiefe hat) und verwende eine weitere Node die dann linksbündig platziert wird (mithilfe der `mid west`- oder `base west`-Anchors):
\node [relang](par) at (c_par){\strut};
\node[anchor=base west] at (par.base west) {Dieser Text soll linksbündig stehen};
2. Erstelle die Node ganz gewöhnlich, aber setze die `text width`-Option explizit (und zwar so, dass sie genauso breit ist wie die breiteste TeX-Box, die gerade so reinpassen würde:
\node [relang, [
relang,
text width=\pgfkeysvalueof{/pgf/minimum width}-2*(\pgfkeysvalueof{/pgf/inner xsep})]
xsep})
] (par) at (c_par) {Dieser Text soll linksbündig stehen};
3. In Verbindung mit der Node direkt darunter würde es sich auch anbieten, das `rectangle split`-Shape zu benutzen, in der man das Alignment für jeden Node-Part angeben kann. Nach dem Laden der `shapes.multipart`-Library kann man dann das Ganze in einer Node machen:
\node[relang, rectangle split, rectangle split parts=2, rectangle split part align=left] (par1) at (c_par)
{Dieser Text soll linksbündig stehen \nodepart{two}
$\!\begin{aligned}
\mu & =\text{Diese und die nächsten zwei Zeilen sollen am = ausgerichtet werden}\\
i & =\text{Beispieltext}\\
\sigma & =\text{Beispieltext}
\end{aligned}$};
2. Ausrichtung am `=` schreit nach einer von `amsmath`’s Environments, hier passt die `aligned`-Environment, die man auch im Inline-Mathematik-Modus verwenden kann (aber ansonsten nicht sollte). Siehe Punkt 1.3.
3. Es können mit dem Coordinate-Operator `|-` und `-|` Koordinaten erreicht werden, die senkrecht zu einer Koordinate und waagrecht zu einer anderen sind (dies ist die implizite Version des `perpendicular cs`). Da solche Pfade vermutlich öfters vorkommen, empfielt es sich ein `to path`-Style zu definieren, der einem die Arbeit abnimmt:
\tikzset{
*|/.style={% Asterisk und |
to path={
(\tikztostart-|\tikztotarget) -- (\tikztotarget) \tikztonodes}}}
Jetzt muss man nur noch
\draw [pfeil] (strat1.south) to[*|] (prod1);
\draw [pfeil] (strat2.south) to[*|] (prod4);
verwenden und die Pfeile sind senkrecht.
Analog dazu kann man auch noch andere Styles definieren, die das ganze in waagrechter Richtung machen (also `*-`). Es bietet sich zusätzlich noch an zusätzliche Styles zu definieren, die das ganze an der Ziel-Node machen (also `|*` und `-*`). Darüber hinaus kann man die `to path`s auch noch so verbessern, dass sie selbst herausfinden, welche Node wo ist, so dass der richtige Anchor (in unserem Beispiel `.south`) automatisch verwendet wird (falls es denn übehaupt eine Node ist).