Как правильно использовать глобальные переменные и какие аналогиченые методы global есть в Питоне?
Глобальные переменные действительно - зло, Можно решить классами, но если до классов еще не дошли, то можно обьявить в функции start словарь:world = {
  'player': {
    'items': [],
    'is_dead': False,
  },
  # other game info
}
и передавать его в каждую игровую функцию:behind(world)
road(world)
...
еще несколько советов:
1. не стоит в каждой функции обьявлять бесконечный цикл, пусть лучше он будет на самом верхнем уровне в функции start, тоже самое и про пользовательский ввод(raw_input) - лучше чтобы он был только одном месте.
2. не надо в road/behind/barn/... вызывать функцию start - это неявная рекурсия да еще и вместе с бесконечными циклами, пусть лучше они выполняют конкретное действие, изменяют игровое состояние(world) и все, остальное забота функции start.
3. Если добавляете один элемент в список, то лучше делать  items.append("топор"), а не  items.extend(["топор"])
Вам видимо нужен аналог статических переменных в Python.
Можно реализовать так:try:
    if road.dead == True:
        pass #вместо пасс пишем то, что происходит, если мужик мертв
except AttributeError:
    road.dead = True #если жив, то убиваем
Хотя реализация с глобальной переменной мне больше нравится