1) I'm not sure if you mean the difference between 'a zice' and 'a spune' or 'se zice' and 'se spune'. Well in any case, the difference is mostly null. In most scenarios you can use either of the 2. There are certain exceptions regarding expressions like "I'm gonna tell on your (to someone)" - "te spun (cuiva)". And from here you can figure out that 'a zice' is more towards 'to say' and 'a spune' is more towards 'to tell'.
Also - 'se zice' = 'se spune' = 'it is said (that)...'
b) Care este diferența dintre --- și --- ? (very common in colloquial)
Care este deosebirea dintre --- și --- ? (a little less common, gives a bit of formal attitude)