FSX BGL file structure
Some comments/additions to try and add to the FSX structure brilliantly outlined by Winfried Orthmann's PDF.
Analysing all the apx, brx, atx, nvx files in FSX...
Headers
The value 0x1992 does indeed appear in all files as the version number in the header.
Of the three unknowns in the header starting at offset 12, the DWORD at 16 always begins 0x01C?????, the DWORD at 20 is always the value 0x08051803 (a magic number for FSX perhaps?).
The other unknowns at the end of the header, if viewed as DWORD dwReserved[7] followed by a WORD could be perhaps positions as Winfried suggests. As a general rule the DWORDs tend to increase in steps as:
00081A70,00081A73,00081A75,00081A76,00081A79,00081A7A,00081A7B,069F
though there are a few exceptions to this:
00081AA0,00081AA2,00081AA3,000206A9,00081AA8,00081AA9,00081AAD,0000
One thing common to all headers however is that when one of the earlier DWORDS is zero then so are all the values that follow it. Some headers just make use of one non-zero DWORD so that might tend to indicate that they are something other positions specifying an area. The first position is always non-zero anyway (required).
Section types
As well as the listed section types there are the types; 0x028, 0x029 and 0x02A. All three appear in apx files, while only 0x002A appears in atx files and only 0x0028 and 0x0029 in nvx files.
Subrecords
Of the 1525 apx bgl files searched I have only found \fsx\scenery\0001\scenery\apx03130.bgl that doesn't have a 0x003B subrecord. All the rest have.
Some apx files also have an unknown 0x003D subrecord of variable length and unknown meaning.
The unknown in TaxiwayPoint subrecords is indeed always 0x0000 (reserved).