В первом случае ты получаешь длинну статического массива, sizeof работает по принципу sizeof(char)*StaticLength.
Во втором случае ты получаешь размер первого элемента, на который указывает p. *p --> p[0] где sizeof(p[0] --> char), тогда как *(p+1) --> p[1]
%)
Python решает практически любые задачи, по отношению к луа там огромнейшее кол-во библиотек и разного рода реализаций, когда Lua сама по себе чистая ВМ с минимальным функционалом (lua pipe, io и тд). Для встраивания лучше использовать Lua, потому что в ней нет ничего лишнего.
Ну тут два варианта можно использовать. Скачать какую ни будь утилиту для работы с подобного рода архивами, и вызывать ее через командную строку с определенными параметрами.
Можно и подключить сторонний проект, например Libarchive