Should functions only take inputs to object method and the object, call those methods and return values if any or should functions also return properties values from the input object
I don’t really understand the question. Can you give examples of what you’re comparing?
Functions should take input only to their parameters. Whether you’re passing in an entire object or individual values depends on the situation. Many cmdlets (like Set-Service) can do both.
Functions should produce objects as output. If a function is doing something and not producing any output, you can optionally implement a -PassThru parameter (again, see Set-Service) so that your function can output its original input for the rest of the pipeline to deal with.