Use case #1 is not an issue as you mentioned because it picks up the cached content from dispatcher, however, the hostname and port# in dispatcher.any file should be of the "publish server" that is supposed to serve the content to dispatcher and not apache server's.
You have configured 'statfileslevel' to 5 which I assume is intentional based on your app architecture/design.
When I will change my page in author http://localhost/content/trainingproject/en.html and activate the page then the updated page will store in the dispatcher cache (the /docroot). But in my case it is not storing in dispatcher cache.
I assume that you understand how dispatcher connects to the publish server, pulls the content from publish server because it is a reverse proxy and caches it as and when required. Check "How Dispatcher returns Documents" @ Overview in case you need more details.
When you activate the modified page, it would reside in the publish server but not in the dispatcher cache until the dispatcher requests for that updated page from publish server. This means it needs to know the publish server's IP/hostname and port to connect and pull the latest content. Render section (/rend01) of dispatcher.any serves this purpose to enable the communication between dispatcher and publish server.
In your case #2, it is not storing updated content in dispatcher because the connection between dispatcher & publish server is broken. Yes, you're correct.
By default, the very first request would go to publish server and all subsequent requests for same content should be served from dispatcher cache in an ideal scenario.