Mastering the terahertz domain: sources and applications