In your scenario (using TCP/IP), if d1 wants to talk to d2, it first determines that d2 is not in subnet s1. Normally, the device will forward the data to the default gateway. If, as in your case, there is no default gateway, d1 will not ARP, and instead return a 'network unreachable' error to the application.
YourAnswers to your questions:
Yes, it's essentially the protocol that in fact defines subnetworks, and therefore the need for routing. there are other protocols, such as Netbios, that do not have the concept of networks and therefore are non-routable.
There are many reasons to use VLANs. In most cases, there is one VLAN per subnet, and vice versa.
Switches will not forward frames from one VLAN to another. so no traffic goes between them.