Cada vez q llamas a una funcion, esta hace una copia de los parametros de entrada y los almacena como variables locales. Cuando la funcion termina, estas variables locales son destruidas. Por lo tanto, cualquier modificacion hecha dentro de la funcion, se hace sobre la copia y no sobre la variable q le pasamos.
Si queres modificar el valor de cierta variable en una funcion, lo q se hace es pasarle a la funcion un puntero a esa variable, entonces todo lo q hagas dentro de la funcion, modificara permanentemente el valor de esa variable (que puede ser global o estar en el main u otra funcion).
Si vas a usar una variable global, no hace falta q se la pases por parametro, cualquier modificacion hecha se va a guardar y la variable no sera destruida al terminar la funcion.
En el ejemplo q pusiste, se perderia el valor, ya que le estas pasando una copia de la variable global.
Con respecto al valor q retorna la funcion, este es reemplazado por el lugar donde estaba la funcion cuando la llamaste, entonces si no lo igualas a alguna variable, el valor se pierde.
resultado=funcion(param1,param2);
Te recomiendo q leas un poco sobre funciones en C, y juga un poco con el lenguaje. Hace codigo para ver q pasa, total aca nada se rompe. Espero q te aclare tu duda, saludos!