I've made a form, is there any way I can use it to enter some sample data that will be saved to the table without actually publishing the form? As far as I can see the preview function doesn't allow that.
There is just the preview that can do that.
If you want to test by saving data, you should have a test environment.
It can be another web application in the same farm or another site where you can simply import your list by saving it as a Template (in the list settings) and then import it in the other web application or site. There you will be able to publish the form and test it.
Hope this helps
Is the point of not publishing the form to not expose it to the public? If so, you could always just create another list from the list template (duplicate of this current) and then lock down permissions on it if a dev env. isn't available to you.
There isn't an out of the box way to accomplish what you are asking however - in other words preview won't persist the results to the list.
Retrieving data ...