Q:

Qual a diferença entre usar ou não um "constraint" no "foreign key"?

Ao criar uma tabela no MySQL usei na criação de campos CONSTRAINT FOREIGN KEY como está a seguir para criar a chave estrangeira:
CREATE TABLE socio 
(
  id_socio      INTEGER NOT NULL,
  nome          VARCHAR(256) NOT NULL,
  cpf           VARCHAR(11) NOT NULL,
  email         VARCHAR(256),
  id_situacao   INTEGER,
  CONSTRAINT pk_id_socio PRIMARY KEY (id_socio),
  CONSTRAINT un_socio_cpf UNIQUE (cpf),
  CONSTRAINT socio_id_situacao_fk_ref FOREIGN KEY (id_situacao) REFERENCES situacao (id_situacao)
);

Qual a diferença de na criação de tabelas, usar apenas o FOREIGN KEY ou o FOREIGN KEY com CONSTRAINT para criar chaves estrangeiras?

A:

A cláusula CONSTRAINT é usada para dar nome a este restrição de integridade. Só isto, dar um nome da sua escolha.
Mesmo sem ela ainda será uma restrição imposta à tabela, porém o nome será o mesmo do índice associado em FOREIGN KEY, e no caso de não ter um índice indicado ele cria um nome baseado no nome da coluna. Neste caso como não tem esse índice sem a CONSTRAINT o nome seria gerado a partir da coluna. No seu exemplo o nome dessas restrições serão pk_id_socio, un_socio_cpf, socio_id_situacao_fk_ref.
Documentação.

