Q: When does APC allocate memory? If I set apc.shm_size = 64M, will 64M of memory be allocated by APC when it starts or does it get allocated in chunks as it is needed?

A: It is allocated at startup.
apc.shm_size = 64M is very low you should use much more (GB)if your server is running several websites. Use apc.php to check your config.

A: According to http://www.php.net/manual/en/apc.configuration.php#ini.apc.shm-size:
apc.shm_size defines the segment size.
The number of segments allocated is defined by the apc.shm_segments configuration value.
