You should run 'port-fast' (in standard terms edge port) in every port not part of your switch core. Even if it is switch.
You should NOT have L2 loop through customer switches.
You should run BPDUGuard and BUM policers all interfaces, customer facing interfaces should be 1/5th or less of core facing limits. Unfortunately limiting unknown unicast often is not supported.
Why running 'port-fast' or edge is crucial is performance of RSTP (and by extension MST) rely on it. How RSTP works is it asks downstream if it can go to forwarding mode, and downstream asks its downstreams until there are no more ports to ask frmo, then the permission propagates back up.
Port-fast or edge port is implicit permission from RSTP point-of-view, if you remove this implicit permission, explicit permission must be gotten otherwise it'll fall back to classic STP timers. Which means even one non-portfast port will kill your subsecond RSTP converge.
Should I set the port between 2 switches as Trunk or just Access?
It really doesn't matter in this situation. Since SwB is only on VLAN 2 and SwC is only on VLAN 3, you can provide access with either a trunk/tagged port or an access port. However, if you want the management SVI on SwB and SwC to be in VLAN 1 like SwA, they will need to be trunk/tagged ports.
Should I set the other Switches with IP address, IP helper address,
VLAN database like the main switch?
IP helper statements do not apply to the L2 VLAN, rather they are applied to the L3 VLAN SVI (switch virtual interface). They should be aware of the VLANs they will be configured to utilize but do not need any IP configuration (other than for management purposes).
In your example, SwA is functioning as your L3 gateway and should have an SVI for each VLAN with an appropriate IP address assigned. You would configure your IP helper statements in the SVI for VLAN 2 and VLAN 3 to refer to the IP address of your DHCP server.
When a station broadcasts out a DHCP Discover frame on the VLAN, the SVI (which exists on that VLAN) will hear it. If it has an IP helper statement configured, it will then relay/proxy the request to the configured IP address (which should be your DHCP server).
And the computers on port fa0/2 still "DHCP request failed". Am I wrong at some points?
Yes, you put your IP helper statement on an SVI on SwB (which has no IP address). It should be on the SVI for VLAN 2 on SwA.
Keep in midn that if you are configuring an SVI for the first time, it is disabled by default. To enable the SVI, you would need to add a no shutdown statement to your configurations unless you had previously configured and enabled the SVI.
This also assumes that the DHCP server is connected to Fa0/3 on SwA and that the station is connected to Fa0/2 on SwB based on your configuration above.
Edit: A final note is that your DHCP server needs to be configured to understand it is providing service for more than one network. If it hasn't been configured to do so, it may not provide the correct information necessary for the setup to work as you wish.
Best Answer
Most probably your core switch has the gateway ip of the subnet like 192.168.1.1. If you want to enable ip-helper on your access switches, then you need to assign ip to the vlan on access switches something like from 192.168.1.2 to 192.168.1.6.
In this case all 6 switches will translate broadcast DHCP discover to unicast and send to DHCP server. DHCP server will receive 6 Discover and reply with 6 Offer. These 6 DHCP Offer will be relayed by all switches to the host so host PC will receive 6 offer. This means a lot of process for everyone without a benefit.
DHCP relay is not something cause high cpu load. It is always best practice to enable ip-helper where your gateway ip is configured for the subnet.