(if, and only if carriers with fighters aren't around, which is rare)
Not nearly as rare in the early game, where stalling is most beneficial. As well, you can still do this if carriers are around, it just won't last very long, but if you only need to stall for 30 seconds or so it will do the trick.
do you have any specifics on how to "run circles around him"?
You're basically asking for an advanced playbook.
A relatively straightforward tactic is "kiting". This involves moving away from the enemy, usually moving around the gravity well. This forces them to chase you, getting drawn out and separating their forces as they go. The AI usually uses a relatively tight fleet cohesion setting, so it will almost never catch up to you, even if you employ slower units like carriers. Human players will turn off fleet cohesion altogether so they can keep pace with faster units and shoot at you, but this has the effect of thinning out their forces and rendering them very vulnerable to strike craft. The AI is particularly gullible, and you can usually coax it into running through a minefield while doing this.
One of my personal favourites is to take advantage of the slow turn speed in Sins. If I identify the enemy focus firing on a single target, I will run that target through the enemy ranks. They will have to turn around to keep firing. Around the 90 degree (half-way) point in the turn, they won't be able to attack anything. Once they complete the turn, I'll run past them again. There are more complicated variations of this strategy, some involving pincers or strike craft support or kiting, but they all basically come down to getting the enemy to spend its time moving around rather than shooting.
The Vasari Subverter and Advent Guardian are two of the best support cruisers for these kinds of antics. The subverter can disable clusters of enemy units (great for the cohesion-addicted AI) and the Advent guardian can use "repulsion" to push enemies away, allowing you to create a protective bubble area that the AI cannot enter.
Those are small-scale examples, within the battle over a single gravity well. At a larger scale, I'm more speaking towards the placement and movement of fleets. It can take several minutes just to move a couple jumps, so positioning your fleet well is critical. By attacking at the right places at the right time, you can keep the AI's fleet pinned down (they will almost never create a second assault force, preferring one big "fleet of doom") and not give them the time to reposition. You don't actually have to commit to attacks, instead just give it a light tap to "aggro" its main fleet and keep it from repositioning. This enables you to control where the AI will attack, because you will never give it the opportunity to reposition to the other front.
What kind of units do I make, how many fleets should I be managing, and how exactly should I harass him?
All three are situation-dependent. Sometimes a map is clearly a 1-front map, other times it's clearly a 2-front map, and how you choose to react to the situation is up to you. Generally you can't go wrong with a large force of LRF, a few good capital ships, and a single fleet applying constant pressure. If the AI is busy defending, it's not really in a position to attack ("best defense is a good offense" is very applicable in this game, since it's hard to attack when you're busy defending). However, if you hit a solid defensive line or need to regroup, a second fleet to cover your other front is pretty well mandatory.
A good strategy when running a two-front approach is "bait and switch". You will attack with one fleet to attract the enemy AI to defend the planet. Once the enemy AI has been distracted (ie, it's on the move), your other fleet moves in, but this one sets up a starbase and maybe a minefield in the gravity well it's attacking. Your distraction force will retreat when the enemy AI shows up to defend. When the AI returns, your defensive formation will be set up (heck, you may even control the planet if you bombard fast enough) and it will likely be defeated.
He either decides to send his nearby superior forces in to defend against my attack before I am able to do any significant damage, or sends them to attack my lightly defended planets and take them over far faster than I am able to take over his.
If he sends a stronger force to attack your smaller force, retreat to a defensible location. If he attacks you there, it's your advantage. If he moves away to attack something else, come back and hit him again. So long as you're careful to knock out any PJI's, you can keep this up pretty well indefinitely. The AI always reacts too slowly and will never be able to catch you off guard.
Sometimes, he'll even send in a single siege frigate if he knows my planet is undefended just to harass me.
These aren't nearly as bad as you might think. Scouts get a x2 damage multiplier against siege frigates, and are dirt cheap and quite fast. Just keep a pack of scouts on defensive duty and you can smack any siege frigates that attacks your less defended flanks before it does any damage, plus they make great scouts
Carriers also work for this, but scouts are more expendable.
And what about defenses? Since I'll be colonizing like crazy, surely I can't spend the resources to build defensive structures for all of them, short of a lucky choke point.
Unless you expect a major battle will be going on there, the only thing you should build are repair bays. These are good because injured units can retreat to them, so a battle doesn't need to be raging there for them to be worthwhile. Another good defensive structure is the frigate factory. It's able to build units that can actually defend nearby planets. Having frigate factories near all your front lines is a great investment since it lets you pump units where you need them rather than building them far away and having to wait for them to arrive.