Q:

Tamanho do campo ocupa valor total definido? 

Se o tamanho máximo de um campo do tipo VARCHAR é 65535 (ocupa 65KB), ele sempre vai ocupar um espaço de 65KB na database por cada linha mesmo se eu colocar menos texto nele? 
EXEMPLO: um campo VARCHAR(65000) ocupa 65kb mesmo se estiver preenchido somente com 200 caracteres e não os 65000?  Ou o tamanho é dinâmico? 

A:

Se o tamanho máximo de um campo do tipo VARCHAR é 65535 (ocupa 65KB), ele sempre vai ocupar um espaço de 65KB na database por cada linha mesmo se eu colocar menos texto nele? 

Não, ele ocupará essencialmente só o espaço ocupado pelo texto.  É um pouco mais complicado que isso, mas é quase só isto, só não ache que se o texto tiver 10 caracteres ocupará 10 bytes.  Depende do encoding usado, dos caracteres usados efetivamente, tem as informações de controle.  Sem falar que pode ter algum outro custo por causa de truques que o banco de dados pode usar para otimizações.  Ocupará mais que 10 bytes, mas não muito mais, quem sabe uns 30 no máximo.  Mas se o texto tiver 1000 caracteres dependendo do caso ocupará 1012, por exemplo. 
Pode usar sem medo.  só o CHAR é que ocupa o espaço, usando ou não. 
Veja mais. 

A:

Sim o tamanho é dinâmico.  VARCHAR só considera o espaço usado pela coluna e não o armazenamento total da coluna.  Isso não quer dizer que você deve adicionar valores altos em um campo, ou seja, é importante saber que você deve limitar o tamanho de uma coluna de comprimento variável(coluna que você pode definir valor). 
Mesmo que a coluna seja variável e o espaço de armazenamento utilizado seja variável o MySQL alocará memória em blocos fixos para armazenar valores.  Por exemplo Varchar(200) usará mais memória que Varchar(5), lembrando que isto não é um problema de espaço de armazenamento. 
Valor em bytes usado por carácter:

