cond() works similar to ifelse() in that it takes an expression, evaluates it, and then returns the value of the expression in the 2nd or 3rd parameter depending on whether the first expression (parameter #1) is true or false respectively.
These:
ifelse(life=lifemax, 1.0, 0.5)
cond(life=lifemax, 1.0, 0.5)
are logically equivalent and will return "1.0" as the value if your character is at max life.
The difference is that ifelse() will evaluate all expressions and cond() will not. For example:
ifelse(numhelper(30), helper(30),pos x, 0)
will actually cause debug flood if helper(30) doesn't exist. Why? Because with ifelse(), numhelper(30), helper(30),pos x, and "0" are all evaluated and then the result is of the final expression is returned. Using the same expressions with cond() will look like this:
cond(numhelper(30), helper(30),pos x, 0)
This will return the same result without the potential for debug flood. First numhelper(30) is evaluated. If it's true, only then will "helper(30),pos x" be evaluated and its result returned. If "numhelper(30)" is false, ie. "0," then "helper(30),pos x" won't ever be seen.
cond() is most synonymous to a ternary expression in actual programming and scripting languages, such as JavaScript and PHP. ifelse() is just a broken mess. I hope that helps to clear up any confusion you had about it, but I'm curious as to how you're trying to use it that it's crashing mugen.