If you're still playing "Pokemon Go" (despite its quite obvious flaws) then good on you. Great, you have a lot of patience and are willing to go through the tedium of playing a mechanically-broken Pokemon game. Even though developer Niantic Studios has managed to improve the Candy gathering system by a little bit using the buddy system, it's still a little hard to round up some Stardust, the resource used to power up your Pokemon.
The fastest and most reliable way to amass Stardust in "Pokemon Go" is to keep catching Pokemon. For every Pokemon you catch, you get 100 Stardust. It's fast, of course, but it's also the literal grind and you need to keep catching a lot of honestly useless Pokemon to make the most out of this method.
The slowest way, on the other hand, is to keep hatching eggs. That requires leaving "Pokemon Go" always open whenever you walk around, but if you have that much dedication and battery power on your phone, you should be just fine. Hatching eggs nets a lot of Stardust, but it just takes longer.
You can also keep fighting and defending gyms. The gyms in "Pokemon Go" also net you Stardust in addition to getting you some gold; 500 Stardust for each Gym you defend, to be specific. Of course, that requires you to actually take over Gyms. This is generally for higher-level players who have strong Pokemon but need a lot of Stardust to make them even stronger.
When's the best time to use Stardust in "Pokemon Go"? You should wait until you're in the higher levels as a Trainer when you have high-CP Pokemon. Get them, and make sure you get Pokemon with good IVs, and spend all your Stardust on them to make them stronger. You'll end up with strong Pokemon in no time if you keep hoarding your Stardust and using it wisely.