So far to develop HTML / CSS changes locally, I have uploaded the themeforest theme through the /wp-admin section and then updated the code accordingly and refreshed the page. This has worked.

Now I want to add the heart-this plugin, but I want to use the heart_this_hearts() template tags because I want the hearts to be in 2 specific locations.

However, if I just add the plugin as a dependency of the blog and not the theme itself, that means the theme wouldn't function by itself since it would be missing a plugin if I import it to another blog that doesn't have the hearts plugin.

My guess is that I should put it in this folder? /Users/edmundmai/Sites/mysite/wp-content/themes/mytheme ? But when I did that and refreshed the admin dashboard, it didn't show up in my list of plugins.

You shouldn't tie a theme to a plugin just for a little feature like that. Just check function_exists() for the plugin function before using it in the template. Then the theme will work with or without it.
– Jacob PeattieDec 7 '18 at 16:33