How does the Linux ARM processor and the DSP communicate?
Afaik it is limited to shared memory, a interrupt line and a hardware
mailbox.
Does the DSP have full access to the DMAs, McBSPs, and timers while
ARM runs Linux?
Yes and no.
There is no synchronization between the DSP and the Linux kernel. If a
linux driver is working with a piece of hardware (the McBsp2 for
example) you can technically access it from the DSP, but the chances are
high that you will not work. Programming the McBsp from the DSP and
having the linux kernel handling the interrupts is a receipt for a
disaster 
You can however just disable the driver support for the peripherals you
want to use in the linux kernel. Afterwards the DSP is free to do
whatever it wants to do.
Also , as far as I remember not all peripherals are usable from the DSP.
Most are, but for some peripherals you get register access but you there
exist no way to get the interrupts to the DSP. I could be wrong, but I
think the I�C block has this restriction. If you run into this problem
you can of course do the work on the ARM using a minimal driver that
communicates with the DSP. It raises the latency, but it is doable.
What should I keep in mind to avoid conflicts between the ARM and DSP?
The ARM and DSP have separate memory caches. If you write to memory
using the DSP and later access the memory from the ARM you may not see
the latest data because it may not have been written back to memory.
The same applies if the ARM has caches enabled.
In a nutshell if you use caches (you should!) the core that reads shared
memory should invalidate the memory region before doing the read, and
the core that writes to shared memory should write-back the cache-content.
On the DSP, DspBios offers the functionality to do this, on the ARM
DspLink offers functionality to do the same.
Btw, just wondering what you want to do with the DSP... I have quite a
bit of DSP code on my harddisk that I'm willing to share if I can help
out a beginner.
Cheers,
Nils Pipenbrinck