Neither. When you call a function only numbers or text is passed. The function has no knowledge of what variables were used.
Consider your function call:
Call "weaponleveling" (ship.bulletexpspeed, ship.bulletlvlspeed)
If those two variables were 100 and 15 respectfully then this call would be identical:
Call "weaponleveling" (100,15)
If you want to modify a variable of a certain instance with a function then you need to pass that instance's uid as one of the parameters and then pick by uid in the function to modify the variables.
Also as blackhornet stated a function has only one return value. if you set the return variable multiple times then only the last value will be used.
The main purpose of a return value is when you call a function from an expression. Like this:
On function "add"
--- set return value to function.param(0)+function.param(1)
Global number sum=0
Start of layout
--- set sum to function.call(100,15)