How to access all devices on remote network via VPN?
The easiest way is to put the VPN on your router and ensure it pushes (advertises) the internal network route.
Alternatively, you can do the same on the Pi, but you then need to add routes on your router for the VPN via the Pi and have the Pi forward packets. ( note you will have asymetric routing with packets from devices bouncing via the router, with packets from the Pi going direct to PC's)
I further comment that the above uses a routed netowork (tun based). You could convert the vpn and Pi into a bridge (ie a virtual switch) using TAP interfaces, but this approach luts a lot of extra load on the network and is harder to work with.
Put the Raspberry PI between the modem and router, so traffic goes modem -> pi -> router.
Let say you have a VPN between the Rasperry and the laptop.
With OpenVPN, you can "push" internal routes from the internal network to the laptop. Then the laptop knows how to join the internal network. You may also have to set routes on the internal nodes telling your laptop is accessible through the VPN. Then all communication will be VPN cyphered.
If you want to bypass the VPN with the Storage Server, let's its normal route on the Storage Server, and make it reachable through a public address (the laptop will communicate to it with this address). This could imply port redirection if the router does network address translatlion (NAT).