I was ableto reduce the ram usage quite a lot, and i was able to compile it.
Great..well done
Are they slower than global variables, would you recommend them in a fast interrupt that is used for a software PWM, or is it better to use a global variable for this purpose?
No, it has no link with access speed. Local variables are defined by compiler out of ram locations and re-used in different macro. so they are same as global variable but as you are not defining their location rather compiler is defining their address. so speed is same. so for fast PWM it doesn't make any difference.
Can I mix local and global variables in the same macro?
Of course you can..in fact we always do that.
Do I always have to use a return function when using local variables, or can I simply put the end result of a macro into a global variable?
if you are returning any thing from macro it's good to return using local return variable as that saves one variable declaration. You can put the end result in global variable but in that case it can be accessible from any macro just not the macro from which you are calling the macro.
Actually global variable is usable from any macro and it doesn't confined to any macro..whereas local variable are confined to macro so you can use that within the macro not outside that macro where you have declared..you will not even see the local variable in other macros other than the macro where you declared. so that mean if you declare "test" local variable in you 10 macros separately they could be using same ram location by compiler so saves 9 location if you had used global variable.