Nein

Jedem Prozess stehen immer 4GB zur Verfügung -
mehr Info. Wirklich vergeben werden die aber nur bei Bedarf. Wenn du z. B. eine Anwendung hast, die 4 GB wirklich braucht und nur 200MB im Arbeitspeicher frei sind, dann wächst die pagefile.sys Datei auf der Festplatte um 3,8 GB.
Zuerst die Antwort auf deine erste Frage:
'zeigt die Speichernutzung wie im Taskmanager
TextBox1.Text = Environment.WorkingSet.ToString;
Taskmanager und der obige Code zeigen wie viel Speicher (von den 4GB) sich tatsächlich im RAM befindet. Wenn du das manuell begrenzen würdest:
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, 100, 500);
dann müsste Windows Teile deines Programs in der pagefile.sys speichern, obwohl es Platz im RAM gibt. Das gilt auch für ein Speicherleck - die pagefile Datei wird immer größer.
So gesehen hat der Code in meinem vorherigen Post nur kosmetische Wirkung. So kann man nicht mehr behaupten, dass eine C++ Anwendung nur 1 MB benötigt, während dieselbe Anwendung geschrieben im .NET - 15MB. Windows und das Framework sind 'Freunde' und Windows beschenkt es mit größeren Stücken von RAM. Wenn aber Arbeitspeicher woanders gebraucht wird, wird er innerhalb von Millisekunden freigegeben.
Das Minimiren ist ein alter Trick, um das zu illustrieren. Dabei wird die beschriebene SetProcessWorkingSetSize Funktion benutzt.
Wie Norbert Eder schon sagte, GC.Collect manuell aufzurufen ist unnötig. Wenn der freie Arbeitspeicher zu knapp wird, kommt er sowieso öfters vorbei.
Es reicht, wenn man immer die Dispose() Methode benutzt; der GC kümmert sich dann um die Freigabe beim nächsten Besuch.