How to obfuscate theme directory URLs

Use get_template_directory_uri():

$url = get_template_directory_uri() . '/images/myimage.jpg';

This function will always return the correct path to your theme.

If you want to hide/shorten that URL, you could use an endpoint, maybe img. The downside is, you load the complete WordPress for each image request.

Or use mod_rewrite:

RewriteRule ^img/([a-z\d-])\.png /wp-content/themes/my_theme/img/$1.png [L]

This will not work in a standalone theme.