What is the correct way to uninstall custom farm features and farm solutions?
Does installing a farm solution add any DLLs to GAC?
If your farm solution has Code, then yes, it adds a DLL to GAC when installing the solution.
Uninstalling Farm Features depends on what is deployed on activation of the feature and what you want to leave. Eg. If you create a List using a Feature-Receiver when the feature is activated, you may want or not want to delete the list and its contents when the feature is deactivated.
There is no guide for uninstalling. It is on your purpose what you intend to leave after uninstalling.