Is it somehow possible to publish add-on without Google approval if it is going to be used for my internal use only?
If not, is there any possibility to make some of the Google Apps Script projects global. So that I would not need to copy same code/functionality to another spreadsheets or docs to get my custom macros to work again.
By selecting Publish > Deploy as Spreadsheets Add-on under the Script Editor, will create a new item under the Chrome Web Store. This item will be linked to your CWS developer account, and you can publish the item as 'private', or as a draft available to testers, so that only people internal to your domain can access it.
You can publish an Add-On to be restricted to a specific domain.
https://developers.google.com/apps-script/add-ons/publish
If the Add-on is not being published publicly, then it does not go through the approval process.
Yes, there is a way to make code in one project "global" to other project. You do that by using the Project Key of the "global" project in another project. It's called a Library.
If you want an "easy" way for users of other Google Spreadsheets or Docs to be able to use your code, (Or for you to access your own code from another document your own) give them your Project Key, and they can access your code as a "Library" to their Project.
Under "Resources" choose, "Libraries". You don't need to do anything to create a Library. Every Apps Script project is available as a Library. All you do is share the Project Key.
You can add an "Add-On" menu item to a Google Spreadsheet or Doc, without publishing an Add-On, and that Add-On menu item will run any code that is in that document, just like an add on. But you would need to edit the document of every user you wanted to deploy the code to, and manually add the code to their document.
There's no point in creating a menu item under the Add-On menu, since you can create a custom menu.