All you need to do is remove the ;
. &
acts as a command separator by itself, so adding ;
after that is invalid.
(sleep 30; command1; command2 param ) & anotherCommand
(The spaces after semicolons aren't needed, I just find it easier to read this way. This is one of the few spots where spaces are optional in shell syntax -- most places, they're either required or forbidden.)
As for better ways of doing this... that really depends on exactly what you're trying to do. We'd need more info to make better suggestions.