Thank you @anav & @Sob for solving the issue. Also, @own3r1138 your post with screenshot gave me an easy understanding/setup guide for the client app.
For documentation purpose I will answer the only unanswered question that I had. The answer is really simple. The question was
Previous, firewall/ip route was redirected all traffic to pihole. But, there is no option to set that on wg(No dhcp for wg). And pihole is not reliable to be a DNS server, that’s why I put a script in place,if pihole failed as a dns.
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.188.25 \
gateway=192.168.88.1
add address=192.168.188.0/24 comment=pinet gateway=192.168.188.1 netmask=24
Here is the solution:
The first rule has defined dns=192.168.188.25 (which is pihole & pihole has dns set to 192.168.88.1) the subnet 192.168.88.XX. So, all dns traffic will route through pihole. My question was what will happen if pihole fails. So, I put the the pihole address in my wg clients dns field. So, it will use pihole as a dns. But, after taking good look , I found out the nat rules:
/ip firewall nat
add action=dst-nat chain=dstnat comment=pihole_bypass disabled=yes \
dst-address=192.168.188.25 dst-port=53 protocol=udp to-addresses=\
192.168.88.1
add action=dst-nat chain=dstnat comment=pihole_bypass disabled=yes \
dst-address=192.168.188.25 dst-port=53 protocol=tcp to-addresses=\
192.168.88.1
are placed to route all traffic destine to 192.168.188.25 to 192.168.88.1 at port 53. So, the same thing happened when I put the pihole dns address to my pihole address. It will also route all my wg traffic to 192.168.88.1. This two nat rules are govern by a script, which checks pihole every few seconds for its update status and enable/disables the NAT rules accordingly.