The playback in the browser require transcoding, and it does it to HLS, which is widely supported, but wont start playback until there is at least couple of segments available.
If you use a native player, like NextPVR.exe or yauiclient or kodi etc, you'll get substantially quicker video startup and channel change time.
ffmpeg will only write the segments to the m3u8 when they're complete.
Browser will only start playback when a couple of segments are in the m3u8 url.
NextPVR's web app doesn't attempt to start the playback too early, because players don't typically like empty playlists.
In theory I could trim a few seconds off, but probably not much. When viewing in the web app, and requiring transcoding, you're probably never get it any faster than you get in that uiclient.html page. That uses ffmpeg's low latency startup modes etc, rather than segmented HLS.
On the uiclient.html page, with the Hauppauge tuner I currently have plugged in, video typically starts in about 4 seconds. Changing channels typically takes about 3 seconds. If the channels are on the same frequency, sometimes the channel change time can be as low as about 1.0-1.5 seconds.
Ultimately how quick your tuner is, and your CPU, also factors into this.