Both functions return permalink to the post or page by it’s ID. What are the differences and which of these functions should I use in which cases?

2 s
When i explored the WordPress core for this answer i found that get_permalink() function internally calls get_page_link() function for getting permalink of page and it calls get_post_permalink() function to get permalink of post.
Therefore either you use get_permalink() function or get_page_link() function, you will get same result.
The difference between these two is get_page_link() function handles page_on_front page set in back end whereas get_post_permalink() function do not consider it.