The content types and columns won't be removed automatically when you deactivate the feature or retract your solution unless you implement a feature receiver to do this through the object model. Even then it will probably throw an exception if the content type is in use anywhere in your site.
If you need to make changes to a content type that you already deployed you can either make changes through the object model and push down changes (in the feature receiver), or create a new content type and make the old one _Hidden.
Links:
Updating Content Types on MSDN