First, you are getting the combat error because your macro is trying to cast stealth every time you use it. The [nocombat] conditional will fix that.
Secondly, you are getting the stealth error because your macro is trying to cast Shadowstrike every time you use it with a mouseover. The [stealth][nostealth] conditionals fix this one.
Lastly, the semicolon is completely separating Backstab from the mouseover conditional, which is why it is casting it without a mouseover.
This fixed up macro should work for your needs:
Code:
#showtooltip
/use [nocombat] !Stealth
/use [@mouseover,harm,stealth][stealth] Shadowstrike
/use [@mouseover,harm,nostealth][nostealth] Backstab
First line doesn't need anything after showtooltip, the icon/tooltip will automatically update with the spell it will use. Second line toggles Stealth as long as you are not in combat. Third line checks for a mouseover that can be harmed while you are in stealth, then checks just for stealth, then casts Shadowstrike if either were true. Fourth line does the same thing as third, but with nostealth. It may be confusing in combat, but [stealth] and [nostealth] count Shadow Dance for the purpose of checking stealth abilities.
Also, keep in mind that !Stealth is a toggle. If you happen to spam the button to get into Stealth, you may end up popping back out. I would like to suggest
/use [nocombat,nostealth] Stealth which guarantees you stay in Stealth and just exit Stealth in other ways.