What seems to be missing is "uboot_env" - is it hidden or am I missing something , because other value supposed to be present are not showing either, e.g.
there is apparently a script (/lib/uboot-envtools.sh) in place for producing etc/fw_env.config but for some reason root has not permission to execute it
But in default there is no configuration set in environment (bad CRC is reported in such case). To save default configuration you have to boot with serial console attached. Enter uboot cli and type saveenv that saves default configuration. Then you should be able to use fw_printenv and fw_setenv.
mtd0 is already assigned to "U-Boot" and reading here it would be my understanding that "uboot_env" should be a separate mtd, should it not?
Accessing U-Boot environment variables in OpenWrt
The relevant tools to manipulate the U-Boot environment are contained in the opkg-package uboot-envtools. Inside a working system consult the file /proc/mtd that should contain the mapping of the flash of the router. We can thus determine the partition where the U-Boot environment is stored.
Some devices seem not to have the uboot_env section and the environment appears with an offset in the section containing uboot (/dev/mtd0) here. In the latter case expect that the environment address (offset) is a multiple of Flash sector size.
mtd is just virtual division for Linux system. In reality it really doesn’t matter. You can flash what ever you want and then partition it how ever you want. In case of uboot you can set offset (that is second value in fw_env.config file). So no unless you have for some reason need to have it separate then it really doesn’t have to be separate.