Quote: "I'm thinking about using a large matrix which would store an integer for each block type. I would need to be able to break it up into sections once the logic portion of generation is done and I'm not sure if you can do that with a matrix."
you mean like the dbpro grid matrix right? Just use a 2d array!
As for chunk size, I'm trying to make a similar system right now using 64x64 chunks. I'd make the size a bit smaller. So, I load the current chunk the player is in, and the 8 chunks around that so that transitions between play areas will be seamless.
In my design, the character is a circle, radius 2, so collision is easy to handle - it's just with adjacent blocks. So, to be on the safe side, I just handle collision with blocks in a 4x4 square around the player. I'm storing collision data for all 9 loaded chunks, (9*64*64 points of collision data), but only checking collision with adjacent blocks.
As for the procedural generation thing... I haven't gotten there yet, I'm still working out quirks with the above two points. However, procedural generation is... a lot of fiddling around. You'll probably want to check out perlin noise as a starting point:
http://forum.thegamecreators.com/?m=forum_view&t=173396&b=1
so... what I'm doing is: generate or load terrain data as the player approaches it, then save/unload the chunk if the player walks far enough away from it, all the while checking collision with adjacent blocks only.

Why does blue text appear every time you are near?