1) узнать размер файла, выделить буфер под размер файла и прочитать файл оптом. Но могут быть проблемы, если файл очень большой.
2)64 бит - 8 байт
32 бит - 4 байта
Представлять можно целыми числами, например с помощью union схематично так:
#include <inttypes.h>
...
typedef union {
uint64_t val8;
uint32_t val4[2];
} block;
...
uint8_t * readdata;
// Выделяем память под массив байт readdata и читаем в него 8 байт из файла (опущено)
....
block * b = (block*)readdata;
// После этого в
// b->val8 - 64 битовый блок
// b->val4[0] и b->val4[1] - два 32 битовых блока