Is hint for translator compulsory while internationalizing a string containing variables?

The notes to translators aren’t required, as far as I can tell, but they will definitely help anyone out who’s trying to translate your plugin. You might want to think of them as best practices rather than requirements.

As to your second question:

Since WordPress 4.6 translations now take translate.wordpress.org as priority and so plugins that are translated via translate.wordpress.org do not necessary require load_plugin_textdomain() anymore. If you don’t want to add a load_plugin_textdomain() call to your plugin you have to set the Requires at least: field in your readme.txt to 4.6.
— from the docs

So I gather that, if you intend your plugin to be translated by the community at translate.wordpress.org, you don’t need to call load_plugin_textdomain(). However, if you’re not going to be distributing your plugin through the official WordPress repository (eg, you’ll be using GitHub or your personal site to distribute it), you might still need to load_plugin_textdomain().