Reset conditionals are one of those things you have to experiment with sometimes. Reset=combat is generally ok because the macro is still going to reset when it gets to the end, regardless of if you are still in combat or not.

Again, reset=x seconds is an idle time, not an active one. Reset=5 means you haven't touched the key in 5 seconds. Every time you hit the key, the timer starts over.

Reset=target is fine as long as you aren't running up against something with a cooldown in the beginning of the macro. For example, if I use a macro for my tank that is

/castsequence reset=target Avenger's Shield, Judgement, blah blah blah

I've got a spell with a 15s cooldown followed by one with an 8s cooldown. If I switch targets in combat right after I've used one of those abilities, my macro will lock up because those first spells are on cooldown. In this case, it's better to use reset=combat or reset=Xseconds so that I know it's not going to reset until enough time has passed for all the abilities in my macro to come back off cooldown.

However, if you are using a null sequence for something, it may be a better idea to use reset=target, for example

/castsequence reset=target Hunter's Mark, Null

In this case, you don't want to be spamming Hunter's Mark over and over on the target. It is a spell with a long duration and no cooldown, but you will still want to apply it to any target you acquire. So you use reset=target so that every time you change targets, the macro will reset and allow you to cast it once.

Finally, you can use multiple reset conditions which function like "or".

/castsequence reset=target/combat/alt Hunter's Mark, null

The castsequence will reset if you change targets or if you leave combat or if you use the key with alt. In a situation where you're in a long-duration fight against a single target, the macro won't meet the normal reset conditions and Hunter's Mark would expire at 5 minutes. Using Alt with the macro would force it to reset so you could cast HM again.