I am running my Pi 4 headless using VNC. Everything works as expected, however when I reboot the Pi, VNC does not reconnect unless I physically connect a monitor directly to the HDMI port on the Pi. After that all is good and I can disconnect the monitor from the Pi.
If you want to run without a monitor you need to create a DISPLAY
Alternatively you can you can create a Virtual Desktop