I'm going to give this a shot - Im not as much as an expert as I would like to believe.
I think it is important to really understand how you want your system to work - There are a few different systems at play - I'm going to explain my implementation, and hopefully I can answer your questions.
Firstly, you need to define ToolIDs to your tools. I suspect this is your master db you are referring too. The post processor only knows the tool number. The PP does not manage tool length or diameter offsets.
I cant imagine for 5 axis work it would make a difference, since the tool length offset will be applied by the controller. I've never dont 5 axis work - But I'm sure there would be a Work offset procedure and then length offsets will be applied.
What you have to do, either in your PP or in my case in the M6 macro is, you have to apply the tool length offset from the MACH4 tool database. G43 H[tool number]. I'm sure you would be able to make use of your own database but then you will have to manually set the offsets - If you make use of MACH4 build in tool database, you immediately get access with on API call to apply to offset. It is also very easy to update the DB via probes etc. I would highly recommend you go that route.
The way I implemented it, was not to open the tool table every time. Once it is set up, you can forget about it basically - Only when I break a bit or want the bit length to be measured again, I open the tool table, change the length to 999 and my M6 macro will measure it again. I can always add extra check boxes or something for this - This was just an easy way to achieve the outcome.
Tool changes require two steps -
1- Physically loading the tool.
2 - Loading the offsets via G43
I have 10 slots also. I dont think of Tool 0 as empty spindle. M6 Macro is scripted in a way to unload, and if selected tool is 0, dont load next tool - Clear the offsets.
Im sure engineering companies that use large bits that resharpen them will also make use of diameter offsets. I dont care for them since I only cut Signs and Cabinets.
The only other real consideration is what you consider as Home Z 0. Some people call this the master tool. This can get a bit confusing. For me this is the bottom of the spindle, without any tool loaded. So basically - If I probe my z height with tool 1 loaded in the spindle and Tool Length 1 Offset applied. HomeZ is then 0. If I unload the tool and clear the length offset, the bottom of the spindle will actually be the Z0 point without the offset applied. Thus you can probe with any tool, change any tool and the offsets will make sure the Z height is correct.
I have 2 cvs database files for my tool rack.
1. One to assign the X,Y,Z position to the tool rack slots.
2. Second To load specific tools into specific slots. This can be random. I can load tool 94 into slot 5 if I want to.
Thus - Dont limit yourself to 1-10 as ATC, and 12-20 as manual - It can be anything you like - Anyway you would like to setup your Master Tool DB.
Tool ID's need to to be the same across all CAMs. In my case I use 2 CAM software apps. Vectric V Carve and Mossaik Cabinet. Both have their own build in tool databases. These databases are responsible for the speeds and feeds for each Tool ID, for each material, for each process etc etc.
You just need to make sure that the tool numbers align between Vectric, Mossaik, MACH4 tool table. For me, this is once off setting thus I did not feel the need to program scripts for this. Will only be done once. The only changes left is when I change a tool in the rack, to update the loaded tool CSV.
I've added some extra code to M6 to go into manual mode when a toolID is not available in the rack.
Then your 2nd questions - From what I've gather - There are NO standards. Every company building an ATC mill or something does it they why they want. Some of the Gcode are standardized but that is about it. I'm sure large companies like Tormach have standards between their machines - But that is above my pay grade..
Hope this helps.