After you catch Cobalion in Mistralton Cave, which you can reach from Route 6 after you get Surf, you can find Virizion in Pinwheel Forest.
How to Find Virizion
If you go north from the Nacrene City exit of Pinwheel Forest, or south from the Skyarrow Bridge exit, you will find two bridges side by side. Just north of these bridges, on the east side, is a small hole in the fence. Going east from this hole, you find some dark grass patches. You can head east from the first section of dark grass to find some stairs leading up to more grass.
East of here are a couple of hollow logs that you can walk through. Go north from the first hollow log to find the entrance to Rumination Field.
Virizion is standing there waiting for you in the clearing. Talk to it to start the battle.
Virizion is a Grass/Fighting pokémon, so it is super-weak to Flying moves, weak to Fire, Ice, Poison, and Psychic moves, affected normally by Normal, Fighting, Bug, Ghost, Dragon, and Steel moves, and is strong against Water, Electric, Grass, Ground, Rock, and Dark moves.
Since you meet it at level 42, it knows Sacred Sword (a physical Fighting move that ignores stat changes), Giga Drain (a physical Grass move restores Virizion's HP by 1/2 of the damage that it inflicted on the target), Retaliate (a Normal physical move), and Helping Hand (which does nothing because this is not a double or triple battle).
The strategy for catching Virizion is pretty much the same as for catching Cobalion. The only complication is that Virizion knows Giga Drain, which will make it hard to keep Virizion's HP down.
Once you have lowered Virizion's HP as much as you can, you should start throwing Dusk Balls at it. I'm not sure if Pinwheel Forest is considered to be a cave, so you might only get the Dusk Ball bonus if you start the Virizion battle after 8PM. Dusk Balls can be purchased in Driftveil City from one of the Pokémart guys. If Virizion's HP is down to 1, and if it is asleep or frozen, each Dusk Ball that you throw will have about an 8% of catching Virizion. This drops to about 6% if you only paralyzed, burned, or poisoned Virizion. If you only lowered Virizion's HP to 1 but didn't inflict a status ailment, you only have about a 4% chance of catching it with a Dusk Ball.
If you run out of Dusk Balls, try using Ultra Balls until you've gone about 30 turns in battle, at which point you should switch to Timer Balls if you have any. Hopefully you'll catch Virizion before then, though.
Terrakion can't be caught until you reach Victory Road.