このクエリは、where句を指定しているため、投稿からすべてのカテゴリを削除しています。つまり、post id =$post_idを持つテーブルposts_categoriesからすべてのレコードを削除します。より具体的にするには、where句に追加する必要があります。
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'");
これは今あなたがしたのと同じことを言いますが、余分な修飾子を追加します。 post_idが$post_idで、カテゴリのIDが(チェックされていないチェックボックスの値)である行のみをテーブルから削除します。
免責事項:関数($ query_cat_id [$ x])のどこにカテゴリIDを保存しているかを推測しています。