1) If you would like to deny specific ip address on specific ports, you would need to configure those deny statements before the "permit ip any any" statement as access-list is checked from top to bottom.
From your example, you would need to configure the following:
access-list inside permit tcp host x.x.x.x any eq smtp
access-list inside deny tcp any any eq smtp
access-list inside deny tcp host 192.168.0.91 any eq 80
access-list inside permit ip any any
All the "deny" ACL needs to be on top of the last line "access-list inside permit ip any any".
If you check the ACL by: "sh run access-list inside" command, it will show you order.
2) If you would like user from the internet to use printer with private ip address of 192.168.0.123, you would need to configure static NAT to translate the private ip to one of your spare public ip address.
Example:
static (inside,outside) 120.125.51.x 192.168.0.123 netmask 255.255.255.255
And also, on the outside access-list, you would need to permit the printer traffic inbound towards the public ip address.
Hope that helps.