Olá, Daniel, tudo bem?
A função de agregação COUNT, retorna uma contagem dos registros existentes em um conjunto de valores. Em outros bancos de dados, como o SQL Server, quando utilizamos uma função de agregação, precisamos também utilizar a cláusula GROUP BY, pois é necessário especificar por quais campos queremos realizar o agrupamento dos registros.
No caso do MySQL, não precisamos utilizar a cláusula GROUP BY ao utilizar uma função de agregação, porém o retorno da consulta, não é feito de forma exata, como no caso da sua primeira query.
select EMBALAGEM , COUNT(*) as CONTADOR from tabela_de_produtos;
Na primeira query, como não foi informado como seria feito o agrupamento, do campo embalagem
foi retornado o primeiro valor encontrado, juntamente com a contagem de todas as linhas da tabela realizada pelo COUNT.
select EMBALAGEM , COUNT(*) as CONTADOR from tabela_de_produtos group by EMBALAGEM
Ao executar a segunda query, utilizando a cláusula GROUP BY, foi retornada uma contagem de todas as linhas da tabela de produtos por embalagem
, ou seja, para cada tipo de embalagem
foi retornada a quantidade existente na tabela.
Espero ter ajudado e bons estudos!