1) Very bad idea. Requests for pages that do not exist should be returned as 404 status, not 301 or 302. 2) Yes. Returning 404 is the right thing here. 3) The URL that appears in the address bar is the one that the user clicked on in the href="" part of the on-page link. URLs are defined in links. htaccess cannot change nor "make" a URL.
You can easily redirect requests for named index pages to URL ending with a trailing slash and the DirectoryIndex directive can be used to link the new request to the internal file that will serve the content. The redirect code has been posted several thousand times before in this forum.
You have the action of mod_rewrite exactly backwards. mod_rewrite cannot "make a URL for a file". Only links make URLs. mod_rewrite acts on the request only after the link is clicked. The RewriteRule alters where inside the server the content will be fetched from.