The garbage collector only knows about .NET resources, not unmanaged resources. Forms and graphics use unmanaged resource extensively so it's good practice to always call .Dispose on _any_ object that has it, when you're done with it.
Because of the great programmers at Microsoft, your system won't become unstable if you don't free up resources (if you're using a recent operating system). You'll just be a bad programmer. :)