The second entry should work fine. The "ambiguous redirect" error sometimes happens if you either have spaces where they shouldn't be, or conversely when an important space is missing.
I would simplify your command to demonstrate:
echo "Test" >/tmp/x.txt 2>&1 &
The ">/tmp/x.txt" part will redirect stdout (file handle #1). A space between the > and the file name is permitted (although in this context would be confusing), but otherwise there should not be any spaces in here.
The 2>&1 will redirect stderr (file handle 2) to whatever file handle 1 goes to (which is stdout). There must not be any spaces in here, either.
The & will background your task. This must be offset with a space from the preceding character.
Reversing the two redirections does not work (although echo is a poor choice here since it does not produce stderr output):
echo "This will not work" 2>&1 >/tmp/x.txt &
This means:
2>&1
Redirect file handle 2 to where file handle 1 goes (which at this point is still the console)
>/tmp/x.txt
Redirect file handle 1 to a file - but since file handle 2 (stderr) is already redirected at this point, it will keep its destination and still go to the console.
The first command you wrote is simply a syntax error.
echo &>/tmp/x.txt
Update: @Wildcard pointed out in the comments that this is actually valid syntax.