Am I breaking something if I set an autoincrement PK to 0? I have this table
CREATE TABLE `test_table` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB;

Insert some records...
INSERT INTO `test_table` (`name`) VALUES ('a');
INSERT INTO `test_table` (`name`) VALUES ('b');
INSERT INTO `test_table` (`name`) VALUES ('c');

So I get records 1, 2 and 3 with values a, b and c respectively.
Now, I need to have a record with 0 as id and empty string as name. So I did this
INSERT INTO `test_table` (`id`, `name`) VALUES ('0', '');
UPDATE `test_table` SET `id`='0' WHERE `id`='4';
ALTER TABLE `test_table` AUTO_INCREMENT = 4 ;

Do I have a guarantee that everything will continue to work properly? Table references, auto increment sequence, etc...
Although not usual practice, a primary key can be 0 because 0 is a valid integer. If you set auto increment on the column it will normally start from 1, however, manually changing an id on an existing row to 0 will not cause any issues. If you have any foreign keys that referenced ID 4 before you changed it to 0, then you'll need to update those as well.
Note that if you use 0 in an INSERT for a primary key, MySQL interprets that as a request to generate a new key. In those cases, you can use the following to tell MySQL to interpret 0 INSERTs as a true 0, not a PRIMARY KEY generation request.
SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';