the dedicated pins would be PIC internal hardware for I2C communication, freeing up instruction cycles for your software. in a PIC without I2C support, you'd have to do it manually, in software, and it would not be as efficient.
it sounds like you are relying much too heavily on the prewritten routines in your C compiler... that's not a good way to do things, because when it doesn't have something, it's harder to figure it out yourself... as you are finding out now. I use a C compiler as well, but pretty much write all my own routines even if similar ones exist, just to get everything the way i want it.