В чем отличия void от Id в objective-c?
Вы наверное имели ввиду void* ?
Отличие в том, что id указатель на objective - c объекты, а void* указатель на неопределенный тип, или просто область в памяти (в которой может хранится все что угодно). 
stackoverflow.com/questions/1304176/objective-c-di...
id - это объект objective-c
void - это пустота/ничто в С
void* - это указатель на переменную неизвестного типа в СUPD.
Если быть совсем точнее, то id это указатель на структуру объекта в objective-c
Если очень интересно, то можно посмотреть подробнее в usr/include/objc/objc.h/// Represents an instance of a class.
struct objc_object {
    Class isa  OBJC_ISA_AVAILABILITY;
};

/// A pointer to an instance of a class.
typedef struct objc_object *id;