USER2 does not need rights on the referenced tables to use views in USER1.
USER2 must have SELECT access on USER1 (or on the views individually); this could be granted via a role
USER1 as a database / view owner must have SELECT WITH GRANT access to the referenced tables; this cannot be granted via a role.
If you don't want to give SELECT WITH GRANT to USER1 directly, then you can create a separate database VIEW1 to hold the views. Give VIEW1 SELECT WITH GRANT, give USER1 CREATE VIEW on VIEW1, and give USER2 SELECT on VIEW1.
Granting select with option on datawarehouse tables (used by USER1's views) to USER1 and granting SELECT on USER1 to USER2 through a ROLE worked.
Now i only need to give that role to USER1's children when i create them and they can perform a SELECT on USER1's views