The types of queues that you mention are describing different aspects of queues.
First of all, frames are placed within a queue whenever there is congestion on the specific port. If there is none, frames are sent or recieved immedately and no queues are used. Once there is congestion, queues are employed to give priority to some frames over others. These queues can be implemented on both incomming traffic on a port as well as outgoing traffic. Now for the terms:
Specifically:
The first two have to do with the direction of travel of the frames:
An ingress queue is a queue in which frames are placed when coming into a port.
An egress queue is a queue in which frames are placed when going out of a port.
The next two have to do with the method of implementation:
A software queue is one that is configured and implementing using software and uses shared resources such as CPU and RAM. This is much slower.
A hardware queue is one that is configured within hardware, uses dedicated resources and thus does not need additional CPU and memory resources to function. This is much faster.
Both ingress and egress queues can be hardware or software implemented.
The strict queue has to do with the method of prioritization. A strict queue is one where the network devices service packets as soon as they arrive, or in other words, in strict priority fashion. This is useful for voice packets.
Keep in mind that notation of the form 1p2q2t indicates the total queuing capabilities that a switch interface supports as a whole. This means this port supports one strict priority queue, two standard priority queues and one WRED threshold per queue (WRED is not a queue but a threshold mechanism for those queues).
These are indeed hardware queues.
An excellent resource for queues on Cisco devices is the following report put together by Aaron Balchunas. We don’t usually link to sites other than Cisco, however, this is well done and I think it’s worth it.
I’m quite sure the hardware queues exist within the ASIC of the switches, without having found something solid on any documentation that confirms this.