Hi, and welcome to the forum! I would definitely do some refinements after Ab Initio, because the ab initio map can be really poor. Moreover, ab initio reconstruction is usually one of the earliest steps in the 3D processing pipeline - have you cleaned up junk particles yet? I’d recommend Oli’s decoy classification method using Heterogeneous Refinement. You can find some resources about it here:
Once you’ve sorted out the junk particles, the next step would be to get a higher resolution consensus, typically using jobs like Homogeneous Refinement, Non-Uniform Refinement, or Local Refinement. From there, you can use 3D Classification. Because 3D classification doesn’t do any alignment, it’s usually best to get the best alignments possible so that the different 3D classes represent distinct compositional/conformational states - otherwise, the classification might be dominated by subtle differences between improperly aligned particles.
To answer your last question, if you have prior knowledge of what the distribution of your heterogeneity looks like, you can absolutely use that to inform how many classes to use. For example, if your protein is known to exist in two different states and each state represents 1/2 of the particles, then two classes is a good place to start. However, if one of the two states only represented 1/10th of the data, then I might use 10 classes. I also usually run another 3D classification job with the same parameters, but with Force Hard Classification turned on - this often helps with finding rarer classes. Hope this helps!
Best,
cbeck