I always did TWO documents.
One was "developers only" and stayed as a separate file in the development folder (because I used staging folders... DEVELOP, TEST, PREP, PRODUCTION). This contained discussions of WHY something was done as well as any special comments on HOW it was set up, and often included a step-by-step overview of any process that involved more than just a query or a really short procedure.
Because I tend to compartmentalize things, each general module had a separate sub-header. I was using the 1., 1.1, 1.1.1, ... numbering scheme. General Modules was usually my chapter 5 and each named module was 5.x, and then if there was some particularly important subroutine or function, it was 5.x.y. For my biggest project, I guess maybe 20 such special routines got their own separate header. The simpler stuff got a slot in a (Word) table that listed entry point, inputs, and outputs.
But there was a second document on my biggest project. I had a "How To" manual that explained what the user could do and how to activate or reach that function. The document was Word-based, had lots of named bookmarks, and it was full of pictures, screen-grabs, etc. One of my modules had a subroutine that would Open the document in Read-Only mode and put it on top of the window stack, using a GoTo Bookmark option so it would jump to the right page for Help. I had a table of bookmarks, some of which were marked with a Form name while others were marked with an asterisk. When you clicked the Help button, another form popped up and presented a list of entries that you could select, with the form-specific items first and the general (*) topics last. Pick one and the form "did its thing" to open the "How To" document to the right page. Then just close that window when finished reading and you were still on the same form (and same tab, where applicable).
On earlier projects, I wasn't that extensive - but still had a "Theory of Operation" and a "How To Use It" document.