1. I guess it should be obvious why command lines needs to be processed. If there is some special processing then a comment is needed, it the function does what it says, I see no need for comments.
2. This is hopefully documented so even a user can read it. "--help" is a common way of doing this. Then this information can be found in the function itself or by running the program.
3. Should be easy do find from the function interface and how it is used in the code. Also reading the code of the function will help out a lot.
4. Stated in the code of the function.
5. Stated in the code of the function.
6. Combine answer 2 and 4
7. Hopefully no, but yes if it does it needs documentation.
8. Normal in C (Hopefully no modification of the arguments is done, if modifications are done: Comment!) In C++ this would be documented in the function interface f(const type& foo) or f(type& foo). First case tells me no modification is done second that I should expect the value to be modified, in the first case your compiler will check that your design rule of not modifying the argument is followed. Writing the same in a comment will sooner or later be broken and the comment being wrong can cause more headache then trying to understand code.
However documentation about architecture giving an overview of the application and explanations as to why and what each module do is important.
My rule of thumb is if functions do what you think they do no comments are really needed. Comment unexpected behavior or portions of code that are complicated (hopefully for a good reason)
Now if you would write an API where you don't expect programmer to have access to the source code. Documentation and not comments (they can be the same thing but not always the case) is needed.
In my opinion comments that are wrong is more detrimental then no comments.