1- tudo o que está dentro do 'def initialize' é um método de update ?
Nada que está no initialize é do update, assim essas nomenclaturas, update, main, initialize... São apenas nomes de funções/métodos que o Ruby usa.
Assim como na maioria das linguagens, o Ruby tem um nome "reservado" para iniciar uma classe, quando você instancia a classe, desse modo:
@aclass = ClasseA.new
o método new, irá chamar automaticamente um método de inicialização que para o Ace é o initialize, mas se usar o main ele deveria funcionar da mesma maneira.
Pense na seguinte forma, pensar fora da caixa

Ruby é uma linguagem orientada a objetos, como basicamente tudo em Ruby é objeto, temos também classes que funcionam sozinhas, que são inicializadas com o programa RPG Maker, essa classe faz basicamente o seguinte:
Chamo classe x, a, z
A cada frame eu chamo o método updateEntão o def update que você diz, nada mais é que um método que está inserido em algum lugar, as vezes dentro de uma classe visível no RPG Maker, as vezes não, que está sendo chamada a cada frame do programa. Então você tem que separar as duas coisas, lembrar que não é só porque estou colocando def update que algo vai atualizar, e sim que tem uma função por trás dele que está fazendo isso, então nada no initialize será atualizado, a menos que você queira

2- escrever $game_player é o mesmo que escrever Game_player.new, certo ? e por conter o cifrão eu posso chamar o $game_player de qualquer lugar, certo ? Mas, porque quando escrevo ,por exemplo, $game_player.x ou .screen_x ele diz que o método não esta definido ? Na verdade eu entendo que realmente não esta definido...mas a momentos em que eles são usados e ao mesmo tempo não encontro as definições dos mesmo em nenhum lugar, o meu grande problema esta em como mencionar alguma coisa...seja lá o que for... 
$game_player não é o mesmo que Game_player.new

É algo parecido com o que expliquei acima, ambos são objetos, porém um você está pegando a classe e chamando um método pertencente a ela, e o outro é um objeto que você criou que foi criado uma instância dessa classe.
Isso para explicar em detalhes é um pouco complicado, eu tenho uma aula aqui (talvez o link esteja quebrado porque estou respondendo do trabalho, mas depois eu arrumo :) )
https://centrorpg.com/index.php?topic=6630.0O que acontece é que você tem um objeto que é uma instância do Game_player, e ela foi atribuido a variável $game_player.
o cifrão é o tipo de variável que ele é, no caso global, e portanto pode ser usado em qualquer classe. A questão principal do $game_player.x não ser lido externamente, é pelo fato de que o atributo dele não está publico. Em outras linguagens o fato dele estar público ou não, é decidido na declaração dessa variável, no Ruby como não é necessário ter declaração, temos que indicar se ele é público de outros modos.
Se colocar,
attr_accessor :x
dentro da classe Game_Player, você está indicando que a variável de instância possa ser lido e modificado externamente,
attr_reader :x
Nesse caso que possa ser apenas acessado.
Essa é uma variável interna da classe, e você está deixando ela ser utilizada como um atributo da instância que você criou :).
Bom acho que compliquei um pouco, mas isso tem que ir aprendendo aos poucos, qualquer coisa sobre o que falei só mandar.