Daemon and non-daemon are types of threads, not actual instances of threads. Normally the JVM will exit when all non-daemon threads have stopped. Daemon threads automatically get stopped when the JVM exists.
How many threads there are in an "empty" JVM is implementation-dependent. There is one thread that runs the main() method, and there might be one or more other threads for example for garbage collection or other background tasks.
Java code always runs in a thread. So the thread that runs the main() method must be created before the main() method runs, otherwise there would be no way to run the method.