Hi Panna,
TestNG doesn't do any additional substitution, so when you declare your parameter's value to be "${foo}", you will receive "${foo}".
You seem to be implying that this works from Eclipse, so I suspect that Eclipse might be doing some additional processing of the XML file before actually passing to TestNG. Or maybe you are doing this substitution in your build and you are actually invoking your entire build from Eclipse.
Do any of these theories ring a bell?
As for your second question, yes, TestNG can invoke your suites in parallel,
here is how to do it (this was posted in August).
--
Cédric