What is the best procedure to upload sites folder from Locahost to live server? I've had problems on and off with executing this task, using D7.

I create sites on localhost , then I ftp the files to live server.

FTPing the whole sites folder doesn't work, sometimes causes errors, how should I upload the sites folder properly?

So what I have done is upload the sites/all  and sites/default/files separately, and I take out the .htacess file from the sites/default/files folder and keep the original one in there...

But that's a pain in the ass, shouldn't it simply be delete the complete sites folder on the server and FTP the one from locahost?
Instead of using FTP, consider using Git over SSH.  Drupal.org has documentation on using Git with Drupal 6, 7, and 8.  Note that for this, your webhost will need to support SSH, which some of the cheapest do not.

If you're using Drupal 8, consider using Git with Composer.

If you need some help figuring out how all this works, consider making a test site and a free account on one of the Drupal-dedicated hosts like Pantheon or Acquia. (Disclaimer: I have sites on Pantheon, but here I'm just recommending trying a free account to see how the Git flow works.)