Мы можем передать параметры по ссылке в функцию. И тогда они будут видны в этой функции и мы сможем их изменять. При обычной передаче, параметры неизменны.
Что насчет переменных.
Переменные бывают глобальные и локальные. Локальные - те, которые объявлены в процедурах/функциях. В главной функции они не видны. Т.е. мы не можем получить значение какой-нибудь переменной, объявленной в процедуре. Глобальные переменные напротив, видны везде, во всей программе.
Надеюсь, объяснил понятно:)