Tbh, you should always return the parent, even if it doesn't return anything in the original code.
No, not really.
Just to give you a general idea of what you should and shouldn't.
Shouldn't:
ServerCmds
ClientCmds
Callback functions such as onAdd, onRemove, onTrigger, onClientEnterGame, etc.
Should:
Anything else
Why? Because anything you shouldn't is typically not called through script, and isn't expecting any return value on the engine side.
The only exception I can think of is that it's nice to return the projectile from onFire. But with so many people lazily copy and pasting the entire ephi shotgun code for any given moment they need to create a projectile, that's a lost cause.