You can compile as you go. In fact, I strongly recommend it. :)
My preferred flow is to start by writing a top level module which has nothing but the I/O signals declaration.
Then I compile it, perform pin assignment and compile it again to check my pin assignment does not violate any rules.
The first compilation is not strictly necessary, it just so that Quartus will import the I/O signal list into the pin assignment editor. Otherwise, you have to type them in manually.
Then I start adding the rest of the logic.
If you go to "Assignments -> Device -> Device and Pin Options -> Programming Files", you can select which type of programming files you want the tool to generate when it's finished compiling.
Quartus defaults to only generating a .sof and .pof, but you can have it generate the .jam as well.
You can also use the "File -> Convert programming files" tool.