Calculating a new bbox every time shouldn't be much of a problem. If you have over 1000 collision checks per frame, or around there, it might cause a little lag. What I do is get the width and height when the sprite is changed, store that, and then only get the x and y positions, add the width and height to those, and subtract 1 to get the right and bottom boundaries.
You will most likely want to do one pixel at a time, especially in platformers. It will reduce the number of possible glitches significantly, and shouldn't cause too much lag, depending on how you check for collisions.