My understanding is that Webpack will bundle all of your code and its dependent libraries (such as React) into a js file. Then when someone visits your site, they will download this bundle which has everything and then run it. Does that mean that even if the visitor has visited some other site that ran on React before, he will still download your bundle that has React in it and run it? Isn't that causing an unnecessary download since that user already has React?
One of the uses of Webpack is bundling all your code in a file to reduce the time of download. In http it's much more efficient to make a request for a big file than dozens of requests for small files.
Answering your first question: yes, an user who has navigated to another react app will always have to download your scripts too.
And for your second question: no, it does not cause an unnecesary download. There are a lot of things that make your bundle unique and it would be very hard (and very insecure) to implement a cache between apps of different domain. Imagine a site whose react code has malicious code in it. You do not want the browser reusing this code in your own app.
For improving performance, however, you can use the browser cache to save your bundles in the client pc whenever they download them. Thanks to that, they will not need to download the scripts each time they visit your app, only when the bundles expire or change.
Maybe this link can help you understand how to add catching to your webpack build.