Pixel perfect is expensive, so limit when you do it. Do bounding box collision detection first. If that passes, then start pixel perfect detection of the 2 sprites.
loop over all the pixels of one sprite. is the texture there not transparent? If so, calculate the screen position (or world position) of the center of that pixel. Taking into account position, rotation, scale. using that screen position, find the corresponding pixel in the 2nd sprite. If its within the bounds of that sprite, then get the texture pixel. If its not transparent, you have a hit!
Do it simply as above. Create a test scene with oddly shaped sprites spinning or that you can move around. Have them change colors when collision is detected.
once you get that working, then think of ways to optimize things. Exit your loops on the first hit found. Limit the math in the loops to simple adding and multplying by precalculating delta vales for the pixel to next pixel location calculation. You want what's inside the nested loop to be as quick as possible.