Sprint Zero: It is introduced to perform some research before initiating the first sprint. Usually this sprint is used during the start of the project for activities like setting development environment, preparing product backlog and so on.
Spikes: Spikes are type of stories that are used for activities like research, exploration, design and even prototyping. In between sprints, you can take spikes for the work related to any technical or design issue. Spikes are of two types Technical Spikes and Functional Spikes.