Can I use I2C bus or GPIOs as I2C to connect I2C devices?
Depending how much data is going along the bus, and if there are "conflicts" of device ID's, or data being transferred at the same time, it's no problem to hang all your devices on one bus. That's what I2C was designed for.

To spread the load, using 2 or 3 I2C buses can make things easier (EG keep different systems separate) but it can mean you have to do the same thing 3 times in software. You may do something like use one bus for "high speed" transfer of lots of data (EG to/from a storage device) and another bus running a lot slower to do less critical activities like read a temperature sensor every second or turn an LED on/off.

Bit-banging I2C using GPIO pins is a "last-resort" as it's usually much easier to use the built-in I2C device, and most processors have things like interrupt handlers and DMA to make the work much easier, automate the transfers, save processor load / software overhead, etc. 

It's much nicer to have communications handled by interrupts rather than trying to do it by GPIO + waits/timers etc., especially if you have a lot to do / a lot of data to move.

Edited to add: It can also be handy to use one bus for devices which need a level shifter (EG 5v devices interfaced to 3.3v micro on one bus, 3.3v native devices on the other bus)