JDK (Java Development Kit) is a name given to a set of tools that are used to compile java code (i.e. .java files) and run the generated .class files. As you probably know, compilation is done using the program named javac (aka the java compiler) and execution is done using the program named java. Besides these two, there are tons of other tools such as a debugger, javadoc generator, and jarsigner (take a look at C:\Program Files\Java\jdk1.8.0_121\bin directory to see what all it contains). All these things make up the "JDK". It can exist anywhere, but usually, when you install the JDK on windows, these programs and their supporting libraries reside in C:\Program Files\Java\jdk1.8.0_121\.
JRE (Java Runtime Environment) comprises a subset of the tools that come with JDK. JRE contains only those programs (and supporting libraries) that are required to run java code. JDK usually includes a JRE ( see the constituents of C:\Program Files\Java\jdk1.8.0_121\jre folder). You should notice that it doesn't contain javac.
When you say JDK and JRE physically exist, that is what you probably mean. They exist in the form of files on your system.
JVM does not physically exist because, unlike your computer, which exists in the form of a physical box with motherboard and chips, the JVM exists in memory. The java.exe program that you run when you try to "execute" your java class implements a "virtual" computer aka the "virtual machine". You can also think of a JVM as a CPU simulator. You pass your java class file as an argument to this VM so that it can execute the instructions contained in your java class file.