Ну, по определению функция - это то, что возвращает значение и не должно иметь побочных эффектов. Функциональное программирование доводит эту парадигму до крайности.
Напротив, операция или подпрограмма могут не иметь возвращаемого значения и вместо этого иметь некоторый побочный эффект. Императивное программирование опирается на такие вещи. Единственный язык, с которым я активно работал, заставлял вас заявлять об этом, это Visual Basic (sub и function). В C # вы просто объявляете void типом возврата, если у вас нет функции в классическом смысле.
Термин метод был придуман AFAIK, чтобы отличать объектно-ориентированное программирование от других стилей. Тогда функция, которая является частью (членом) объекта, будет методом.
Надеюсь, это поможет.