Prepare Content will enable the onContentPrepare plugins event for the content of the module. So the custom html module's html content will go through the process of content plugins, similar to what happens on the articles.
This enables you to run content plugins (e.g. loadModule, email cloaking, etc) in your custom html modules.
I guess that the answer on when it should be used becomes obvious now. When you have content that requires to be processed by content Plugins.
Impact on performance: I don't have exact metrics on my hands, but as it involves extra processing, this adds up some extra tasks on the php side, although it should be minimum (while depending on what your content plugins are and do).
If you don't have content that needs content plugins, keep it disabled.