Pass custom variable from template.php to *.tpl.php
Every element key in the root of the $variables array will be available in the template file as an actual variable. The mechanics behind this is in theme_render_template(), which uses PHP's extract() function on the theme's variables.

So when you look at $content in the template file, that corresponds to $variables['content'] in the preprocess function. 

Similarly, if you add $variables['newVariableName'] in the preprocess function, it will be available at $newVariableName in the template file.

If you want to add it to the content array, you need to do so explicitly in the preprocess function, e.g. $variables['content']['newVariableName'] = ...

Bear in mind that the content array is supposed to be a render array, so that's probably not the best place for it. The way you have it currently is fine, just use if (isset($newVariableName)): in place of your current array_key_exists condition.

Your current method is considered best practice for passing variables from preprocess functions (whether in template.php or a module file) to template files, you don't need to change anything in your thinking there.